ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDY3ZDJjZDYuLmU3MWY2YWMgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtNDAsNiArNDAsOSBAQAogL2VycmxvZwogL3JlbG9jX29mZgogCisvaW5jbHVkZS9nZW5lcmF0ZWQvCisvbGliL2FzbS1vZmZzZXRzLnMKKwogIyBzdGdpdCBnZW5lcmF0ZWQgZGlycwogcGF0Y2hlcy0qCiAuc3RnaXQtZWRpdC50eHQKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggMmY2MTc3Ni4uOTI1OGNiMSAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTE0NCw2ICsxNDQsOCBAQAogCWRsdmlzaW9uICAgICAgICBQUEM0MDVFUAogCWdkcHBjNDQwZXR4CVBQQzQ0MEVQL0dSCiAJaW50aXAJCVBQQzQ2MEVYCisJaW8JCVBQQzQwNUVQCisJaW9jb24JCVBQQzQwNUVQCiAJbmVvCQlQUEM0MDVFUAogCiBEYXZlIEVsbGlzIDxER0VAc2l4bmV0aW8uY29tPgpAQCAtNDYyLDEwICs0NjQsMTEgQEAKIAogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KIAotCVhQRURJVEUxMDAwCVBQQzQ0MEdYCi0JWFBFRElURTUxNzAJTVBDODY0MAotCVhQRURJVEU1MjAwCU1QQzg1NDgKLQlYUEVESVRFNTM3MAlNUEM4NTcyCisJeHBlZGl0ZTEwMDAJUFBDNDQwR1gKKwl4cGVkaXRlNTE3MAlNUEM4NjQwCisJeHBlZGl0ZTUyMDAJTVBDODU0OAorCXhwZWRpdGU1MzcwCU1QQzg1NzIKKwl4cGVkaXRlNTUwMAlQMjAyMAogCiBEYXZpZCBVcGRlZ3JhZmYgPGRhdmVAY3JheS5jb20+CiAKZGlmZiAtLWdpdCBhL01BS0VBTEwgYi9NQUtFQUxMCmluZGV4IDUxMzEyZGQuLmRiMTFmMTMgMTAwNzU1Ci0tLSBhL01BS0VBTEwKKysrIGIvTUFLRUFMTApAQCAtNTU0LDkgKzU1NCw3IEBACiAjIyBpMzg2IFN5c3RlbXMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotTElTVF94ODY9IiQoYm9hcmRzX2J5X2FyY2ggaTM4NikKLQlzYzUyMF9lTkVUCVwKLSIKK0xJU1RfeDg2PSIkKGJvYXJkc19ieV9hcmNoIGkzODYpIgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBOaW9zLUlJIFN5c3RlbXMKQEAgLTYwMSwzOSArNTk5LDE3IEBACiAjIyBCbGFja2ZpbiBTeXN0ZW1zCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLUxJU1RfYmxhY2tmaW49IiQoYm9hcmRzX2J5X2FyY2ggYmxhY2tmaW4pCi0JYmY1MjctZXpraXQtdjIKLSIKK0xJU1RfYmxhY2tmaW49IiQoYm9hcmRzX2J5X2FyY2ggYmxhY2tmaW4pIgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBTSCBTeXN0ZW1zCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLUxJU1Rfc2gyPSIJCVwKLQlyc2s3MjAzCQlcCi0iCi1MSVNUX3NoMz0iCQlcCi0JbXByMgkJXAotCW1zNzcyMHNlCVwKLSIKK0xJU1Rfc2gyPSIkKGJvYXJkc19ieV9jcHUgc2gyKSIKK0xJU1Rfc2gzPSIkKGJvYXJkc19ieV9jcHUgc2gzKSIKK0xJU1Rfc2g0PSIkKGJvYXJkc19ieV9jcHUgc2g0KSIKIAotTElTVF9zaDQ9IgkJXAotCW1zNzc1MHNlCVwKLQltczc3MjJzZQlcCi0JTWlnb1IJCVwKLQlyNzc4MG1wCQlcCi0JcjJkcGx1cwkJXAotCXNoNzc2M3JkcAlcCi0Jc2g3Nzg1bGNyCVwKLQlhcDMyNXJ4YQlcCi0JZXNwdAkJXAotIgotCi1MSVNUX3NoPSIJCVwKLQkke0xJU1Rfc2gyfQlcCi0JJHtMSVNUX3NoM30JXAotCSR7TElTVF9zaDR9CVwKLSIKK0xJU1Rfc2g9IiQoYm9hcmRzX2J5X2FyY2ggc2gpIgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBTUEFSQyBTeXN0ZW1zCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDA2YzcxYTIuLjVjODNiMDcgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0zNzIsNyArMzcyLDggQEAKIAkJY2QgJChMTkRJUikgJiYgJChMRCkgJChMREZMQUdTKSAkJFVOREVGX1NZTSAkKF9fT0JKUykgXAogCQkJLS1zdGFydC1ncm91cCAkKF9fTElCUykgLS1lbmQtZ3JvdXAgJChQTEFURk9STV9MSUJTKSBcCiAJCQktTWFwIHUtYm9vdC5tYXAgLW8gdS1ib290Ci0kKG9iail1LWJvb3Q6CWRlcGVuZCAkKFNVQkRJUlMpICQoT0JKUykgJChMSUJCT0FSRCkgJChMSUJTKSAkKExEU0NSSVBUKSAkKG9iail1LWJvb3QubGRzCiskKG9iail1LWJvb3Q6CWRlcGVuZCBcCisJCSQoU1VCRElSUykgJChPQkpTKSAkKExJQkJPQVJEKSAkKExJQlMpICQoTERTQ1JJUFQpICQob2JqKXUtYm9vdC5sZHMKIAkJJChHRU5fVUJPT1QpCiBpZmVxICgkKENPTkZJR19LQUxMU1lNUykseSkKIAkJc21hcD1gJChjYWxsIFNZU1RFTV9NQVAsdS1ib290KSB8IFwKQEAgLTQwMCw3ICs0MDEsNyBAQAogJChvYmopdS1ib290LmxkczogJChMRFNDUklQVCkKIAkJJChDUFApICQoQ1BQRkxBR1MpICQoTERQUEZMQUdTKSAtYW5zaSAtRF9fQVNTRU1CTFlfXyAtUCAtIDwkXiA+JEAKIAotJChOQU5EX1NQTCk6CSQoVElNRVNUQU1QX0ZJTEUpICQoVkVSU0lPTl9GSUxFKSAkKG9iailpbmNsdWRlL2F1dG9jb25mLm1rCiskKE5BTkRfU1BMKToJJChUSU1FU1RBTVBfRklMRSkgJChWRVJTSU9OX0ZJTEUpIGRlcGVuZAogCQkkKE1BS0UpIC1DIG5hbmRfc3BsL2JvYXJkLyQoQk9BUkRESVIpIGFsbAogCiAkKFVfQk9PVF9OQU5EKToJJChOQU5EX1NQTCkgJChvYmopdS1ib290LmJpbgpAQCAtNDI2LDcgKzQyNyw5IEBACiAKICMgRXhwbGljaXRseSBtYWtlIF9kZXBlbmQgaW4gc3ViZGlycyBjb250YWluaW5nIG11bHRpcGxlIHRhcmdldHMgdG8gcHJldmVudAogIyBwYXJhbGxlbCBzdWItbWFrZXMgY3JlYXRpbmcgLmRlcGVuZCBmaWxlcyBzaW11bHRhbmVvdXNseS4KLWRlcGVuZCBkZXA6CSQoVElNRVNUQU1QX0ZJTEUpICQoVkVSU0lPTl9GSUxFKSAkKG9iailpbmNsdWRlL2F1dG9jb25mLm1rCitkZXBlbmQgZGVwOgkkKFRJTUVTVEFNUF9GSUxFKSAkKFZFUlNJT05fRklMRSkgXAorCQkkKG9iailpbmNsdWRlL2F1dG9jb25mLm1rIFwKKwkJJChvYmopaW5jbHVkZS9nZW5lcmF0ZWQvZ2VuZXJpYy1hc20tb2Zmc2V0cy5oCiAJCWZvciBkaXIgaW4gJChTVUJESVJTKSAkKENQVURJUikgJChkaXIgJChMRFNDUklQVCkpIDsgZG8gXAogCQkJJChNQUtFKSAtQyAkJGRpciBfZGVwZW5kIDsgZG9uZQogCkBAIC00NzMsNiArNDc2LDE4IEBACiAJCXNlZCAtbiAtZiB0b29scy9zY3JpcHRzL2RlZmluZTJtay5zZWQgPiAkQC50bXAgJiYgXAogCW12ICRALnRtcCAkQAogCiskKG9iailpbmNsdWRlL2dlbmVyYXRlZC9nZW5lcmljLWFzbS1vZmZzZXRzLmg6CSQob2JqKWluY2x1ZGUvYXV0b2NvbmYubWsuZGVwIFwKKwkkKG9iailsaWIvYXNtLW9mZnNldHMucworCUAkKFhFQ0hPKSBHZW5lcmF0aW5nICRACisJdG9vbHMvc2NyaXB0cy9tYWtlLWFzbS1vZmZzZXRzICQob2JqKWxpYi9hc20tb2Zmc2V0cy5zICRACisKKyQob2JqKWxpYi9hc20tb2Zmc2V0cy5zOgkkKG9iailpbmNsdWRlL2F1dG9jb25mLm1rLmRlcCBcCisJJChzcmMpbGliL2FzbS1vZmZzZXRzLmMKKwlAbWtkaXIgLXAgJChvYmopbGliCisJJChDQykgLURET19ERVBTX09OTFkgXAorCQkkKENGTEFHUykgJChDRkxBR1NfJChCQ1VSRElSKS8kKEBGKSkgJChDRkxBR1NfJChCQ1VSRElSKSkgXAorCQktbyAkQCAkKHNyYylsaWIvYXNtLW9mZnNldHMuYyAtYyAtUworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBlbHNlCSMgIWNvbmZpZy5tawogYWxsICQob2JqKXUtYm9vdC5oZXggJChvYmopdS1ib290LnNyZWMgJChvYmopdS1ib290LmJpbiBcCkBAIC0xMTc2LDk2ICsxMTkxLDYgQEAKICQoTklPUzJfR0VORVJJQzolPSVfY29uZmlnKSA6IHVuY29uZmlnCiAJQCQoTUtDT05GSUcpICRAIG5pb3MyIG5pb3MyIG5pb3MyLWdlbmVyaWMgYWx0ZXJhCiAKLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgQmxhY2tmaW4KLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotYmY1MjctZXpraXQtdjJfY29uZmlnCTogdW5jb25maWcKLQlAJChNS0NPTkZJRykgLXQgQkY1MjdfRVpLSVRfUkVWXzJfMSBcCi0JCWJmNTI3LWV6a2l0IGJsYWNrZmluIGJsYWNrZmluIGJmNTI3LWV6a2l0Ci0KLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgU0gzIChTdXBlckgpCi0jPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIHNoMiAoUmVuZXNhcyBTdXBlckgpCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1yc2s3MjAzX2NvbmZpZzogdW5jb25maWcKLQlAbWtkaXIgLXAgJChvYmopaW5jbHVkZQotCUBlY2hvICIjZGVmaW5lIENPTkZJR19SU0s3MjAzIDEiID4gJChvYmopaW5jbHVkZS9jb25maWcuaAotCUAkKE1LQ09ORklHKSAtYSAkQCBzaCBzaDIgcnNrNzIwMyByZW5lc2FzCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIHNoMyAoUmVuZXNhcyBTdXBlckgpCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLW1wcjJfY29uZmlnOiB1bmNvbmZpZwotCUBta2RpciAtcCAkKG9iailpbmNsdWRlCi0JQGVjaG8gIiNkZWZpbmUgQ09ORklHX01QUjIgMSIgPiAkKG9iailpbmNsdWRlL2NvbmZpZy5oCi0JQCQoTUtDT05GSUcpIC1hICRAIHNoIHNoMyBtcHIyCi0KLW1zNzcyMHNlX2NvbmZpZzogdW5jb25maWcKLQlAbWtkaXIgLXAgJChvYmopaW5jbHVkZQotCUBlY2hvICIjZGVmaW5lIENPTkZJR19NUzc3MjBTRSAxIiA+ICQob2JqKWluY2x1ZGUvY29uZmlnLmgKLQlAJChNS0NPTkZJRykgLWEgJEAgc2ggc2gzIG1zNzcyMHNlCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIHNoNCAoUmVuZXNhcyBTdXBlckgpCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLU1pZ29SX2NvbmZpZyA6ICAgICAgIHVuY29uZmlnCi0JQG1rZGlyIC1wICQob2JqKWluY2x1ZGUKLQlAZWNobyAiI2RlZmluZSBDT05GSUdfTUlHT19SIDEiID4gJChvYmopaW5jbHVkZS9jb25maWcuaAotCUAkKE1LQ09ORklHKSAtYSAkQCBzaCBzaDQgTWlnb1IgcmVuZXNhcwotCi1tczc3NTBzZV9jb25maWc6IHVuY29uZmlnCi0JQG1rZGlyIC1wICQob2JqKWluY2x1ZGUKLQlAZWNobyAiI2RlZmluZSBDT05GSUdfTVM3NzUwU0UgMSIgPiAkKG9iailpbmNsdWRlL2NvbmZpZy5oCi0JQCQoTUtDT05GSUcpIC1hICRAIHNoIHNoNCBtczc3NTBzZQotCi1tczc3MjJzZV9jb25maWcgOgl1bmNvbmZpZwotCUBta2RpciAtcCAkKG9iailpbmNsdWRlCi0JQGVjaG8gIiNkZWZpbmUgQ09ORklHX01TNzcyMlNFIDEiID4gJChvYmopaW5jbHVkZS9jb25maWcuaAotCUAkKE1LQ09ORklHKSAtYSAkQCBzaCBzaDQgbXM3NzIyc2UKLQotcjJkcGx1c19jb25maWcgIDogICB1bmNvbmZpZwotCUBta2RpciAtcCAkKG9iailpbmNsdWRlCi0JQGVjaG8gIiNkZWZpbmUgQ09ORklHX1IyRFBMVVMgMSIgPiAkKG9iailpbmNsdWRlL2NvbmZpZy5oCi0JQCQoTUtDT05GSUcpIC1hICRAIHNoIHNoNCByMmRwbHVzIHJlbmVzYXMKLQotcjc3ODBtcF9jb25maWc6IHVuY29uZmlnCi0JQG1rZGlyIC1wICQob2JqKWluY2x1ZGUKLQlAZWNobyAiI2RlZmluZSBDT05GSUdfUjc3ODBNUCAxIiA+ICQob2JqKWluY2x1ZGUvY29uZmlnLmgKLQlAJChNS0NPTkZJRykgLWEgJEAgc2ggc2g0IHI3NzgwbXAgcmVuZXNhcwotCi1zaDc3NjNyZHBfY29uZmlnICA6ICAgdW5jb25maWcKLQlAbWtkaXIgLXAgJChvYmopaW5jbHVkZQotCUBlY2hvICIjZGVmaW5lIENPTkZJR19TSDc3NjNSRFAgMSIgPiAkKG9iailpbmNsdWRlL2NvbmZpZy5oCi0JQCQoTUtDT05GSUcpIC1hICRAIHNoIHNoNCBzaDc3NjNyZHAgcmVuZXNhcwotCi1zaDc3ODVsY3JfMzJiaXRfY29uZmlnIFwKLXNoNzc4NWxjcl9jb25maWcgIDogICB1bmNvbmZpZwotCUBta2RpciAtcCAkKG9iailpbmNsdWRlCi0JQG1rZGlyIC1wICQob2JqKWJvYXJkL3JlbmVzYXMvc2g3Nzg1bGNyCi0JQGVjaG8gIiNkZWZpbmUgQ09ORklHX1NINzc4NUxDUiAxIiA+ICQob2JqKWluY2x1ZGUvY29uZmlnLmgKLQlAaWYgWyAiJChmaW5kc3RyaW5nIDMyYml0LCAkQCkiIF0gOyB0aGVuIFwKLQkJZWNobyAiI2RlZmluZSBDT05GSUdfU0hfMzJCSVQgMSIgPj4gJChvYmopaW5jbHVkZS9jb25maWcuaCA7IFwKLQkJZWNobyAiQ09ORklHX1NZU19URVhUX0JBU0UgPSAweDhmZjgwMDAwIiA+IFwKLQkJCSQob2JqKWJvYXJkL3JlbmVzYXMvc2g3Nzg1bGNyL2NvbmZpZy50bXAgOyBcCi0JZmkKLQlAJChNS0NPTkZJRykgLW4gJEAgLWEgc2g3Nzg1bGNyIHNoIHNoNCBzaDc3ODVsY3IgcmVuZXNhcwotCi1hcDMyNXJ4YV9jb25maWcgIDogICB1bmNvbmZpZwotCUBta2RpciAtcCAkKG9iailpbmNsdWRlCi0JQGVjaG8gIiNkZWZpbmUgQ09ORklHX0FQMzI1UlhBIDEiID4gJChvYmopaW5jbHVkZS9jb25maWcuaAotCUAkKE1LQ09ORklHKSAtYSAkQCBzaCBzaDQgYXAzMjVyeGEgcmVuZXNhcwotCi1lc3B0X2NvbmZpZyAgOiAgIHVuY29uZmlnCi0JQG1rZGlyIC1wICQob2JqKWluY2x1ZGUKLQlAZWNobyAiI2RlZmluZSBDT05GSUdfRVNQVCAxIiA+ICQob2JqKWluY2x1ZGUvY29uZmlnLmgKLQlAJChNS0NPTkZJRykgLWEgJEAgc2ggc2g0IGVzcHQKLQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCkBAIC0xMjk2LDYgKzEyMjEsNyBAQAogCSAgICAgICAkKG9iail1LWJvb3QubGRzCQkJCQkJICBcCiAJICAgICAgICQob2JqKWFyY2gvYmxhY2tmaW4vY3B1L2Jvb3Ryb20tYXNtLW9mZnNldHMuW2Noc10KIAlAcm0gLWYgJChvYmopaW5jbHVkZS9ibXBfbG9nby5oCisJQHJtIC1mICQob2JqKWxpYi9hc20tb2Zmc2V0cy5zCiAJQHJtIC1mICQob2JqKW5hbmRfc3BsL3t1LWJvb3QubGRzLHUtYm9vdC1zcGwsdS1ib290LXNwbC5tYXAsU3lzdGVtLm1hcH0KIAlAcm0gLWYgJChvYmopb25lbmFuZF9pcGwvb25lbmFuZC17aXBsLGlwbC5iaW4saXBsLm1hcH0KIAlAcm0gLWYgJChPTkVOQU5EX0JJTikKQEAgLTEzMTksNiArMTI0NSw3IEBACiAJQHJtIC1mICQob2JqKXRvb2xzL3tlbnYvY3JjMzIuYyxpbmNhLXN3YXAtYnl0ZXN9CiAJQHJtIC1mICQob2JqKWFyY2gvcG93ZXJwYy9jcHUvbXBjODI0eC9iZWRidWdfNjAzZS5jCiAJQHJtIC1mICQob2JqKWluY2x1ZGUvYXNtL3Byb2MgJChvYmopaW5jbHVkZS9hc20vYXJjaCAkKG9iailpbmNsdWRlL2FzbQorCUBybSAtZnIgJChvYmopaW5jbHVkZS9nZW5lcmF0ZWQKIAlAWyAhIC1kICQob2JqKW5hbmRfc3BsIF0gfHwgZmluZCAkKG9iailuYW5kX3NwbCAtbmFtZSAiKiIgLXR5cGUgbCAtcHJpbnQgfCB4YXJncyBybSAtZgogCUBbICEgLWQgJChvYmopb25lbmFuZF9pcGwgXSB8fCBmaW5kICQob2JqKW9uZW5hbmRfaXBsIC1uYW1lICIqIiAtdHlwZSBsIC1wcmludCB8IHhhcmdzIHJtIC1mCiAKZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQppbmRleCBhNTA3YTFmLi4zZDg3NDIzIDEwMDY0NAotLS0gYS9SRUFETUUKKysrIGIvUkVBRE1FCkBAIC0yNjg2LDcgKzI2ODYsNyBAQAogCQlhcmVhIGRlZmluZWQgYnkgQ09ORklHX1NZU19JTklUX1JBTV9BRERSLiBVc3VhbGx5CiAJCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIGlzIGNob3NlbiBzdWNoIHRoYXQgdGhlIGluaXRpYWwKIAkJZGF0YSBpcyBsb2NhdGVkIGF0IHRoZSBlbmQgb2YgdGhlIGF2YWlsYWJsZSBzcGFjZQotCQkoc29tZXRpbWVzIHdyaXR0ZW4gYXMgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0KKwkJKHNvbWV0aW1lcyB3cml0dGVuIGFzIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLQogCQlDT05GSUdfU1lTX0lOSVRfREFUQV9TSVpFKSwgYW5kIHRoZSBpbml0aWFsIHN0YWNrIGlzIGp1c3QKIAkJYmVsb3cgdGhhdCBhcmVhIChncm93aW5nIGZyb20gKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArCiAJCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUKSBkb3dud2FyZC4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NwdS9hcm0xMTM2L3N0YXJ0LlMgYi9hcmNoL2FybS9jcHUvYXJtMTEzNi9zdGFydC5TCmluZGV4IDI5ZWQwNjUuLmQ3MGNhMWQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NwdS9hcm0xMTM2L3N0YXJ0LlMKKysrIGIvYXJjaC9hcm0vY3B1L2FybTExMzYvc3RhcnQuUwpAQCAtMjgsNiArMjgsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDx2ZXJzaW9uLmg+CiAuZ2xvYmwgX3N0YXJ0CkBAIC0yMzcsMTMgKzIzOCwxMyBAQAogCWxkcglyMywgX3JlbF9keW5fZW5kX29mcwkvKiByMyA8LSByZWwgZHluIGVuZCBvZnMgKi8KIAlhZGQJcjMsIHIzLCByMAkJLyogcjMgPC0gcmVsIGR5biBlbmQgaW4gRkxBU0ggKi8KIGZpeGxvb3A6Ci0JbGRyCXIwLCBbcjJdCS8qIHIwIDwtIGxvY2F0aW9uIHRvIGZpeCB1cCwgSU4gRkxBU0ghICovCi0JYWRkCXIwLCByOQkJLyogcjAgPC0gbG9jYXRpb24gdG8gZml4IHVwIGluIFJBTSAqLworCWxkcglyMCwgW3IyXQkJLyogcjAgPC0gbG9jYXRpb24gdG8gZml4IHVwLCBJTiBGTEFTSCEgKi8KKwlhZGQJcjAsIHIwLCByOQkJLyogcjAgPC0gbG9jYXRpb24gdG8gZml4IHVwIGluIFJBTSAqLwogCWxkcglyMSwgW3IyLCAjNF0KIAlhbmQJcjgsIHIxLCAjMHhmZgotCWNtcAlyOCwgIzIzCQkvKiByZWxhdGl2ZSBmaXh1cD8gKi8KKwljbXAJcjgsICMyMwkJCS8qIHJlbGF0aXZlIGZpeHVwPyAqLwogCWJlcQlmaXhyZWwKLQljbXAJcjgsICMyCQkvKiBhYnNvbHV0ZSBmaXh1cD8gKi8KKwljbXAJcjgsICMyCQkJLyogYWJzb2x1dGUgZml4dXA/ICovCiAJYmVxCWZpeGFicwogCS8qIGlnbm9yZSB1bmtub3duIHR5cGUgb2YgZml4dXAgKi8KIAliCWZpeG5leHQKQEAgLTI2MCw5ICsyNjEsOSBAQAogCWFkZAlyMSwgcjEsIHI5CiBmaXhuZXh0OgogCXN0cglyMSwgW3IwXQotCWFkZAlyMiwgcjIsICM4CS8qIGVhY2ggcmVsLmR5biBlbnRyeSBpcyA4IGJ5dGVzICovCisJYWRkCXIyLCByMiwgIzgJCS8qIGVhY2ggcmVsLmR5biBlbnRyeSBpcyA4IGJ5dGVzICovCiAJY21wCXIyLCByMwotCWJsZQlmaXhsb29wCisJYmxvCWZpeGxvb3AKICNlbmRpZgogI2VuZGlmCS8qICNpZm5kZWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QgKi8KIApAQCAtMjk2LDggKzI5NywxMCBAQAoganVtcF8yX3JhbToKIAlsZHIJcjAsIF9ib2FyZF9pbml0X3Jfb2ZzCiAJYWRyCXIxLCBfc3RhcnQKLQlhZGQJcjAsIHIwLCByMQotCWFkZAlsciwgcjAsIHI5CisJYWRkCWxyLCByMCwgcjEKKyNpZm5kZWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QKKwlhZGQJbHIsIGxyLCByOQorI2VuZGlmCiAJLyogc2V0dXAgcGFyYW1ldGVycyBmb3IgYm9hcmRfaW5pdF9yICovCiAJbW92CXIwLCByNQkJLyogZ2RfdCAqLwogCW1vdglyMSwgcjcJCS8qIGRlc3RfYWRkciAqLwpAQCAtMzgwLDcgKzM4Myw3IEBACiAJc3ViCXNwLCByMCwgIzEyOAkJLyogbGVhdmUgMzIgd29yZHMgZm9yIGFib3J0LXN0YWNrICAgKi8KICNlbHNlCiAJc3ViCXIwLCByMCwgI0NPTkZJR19TWVNfTUFMTE9DX0xFTiAvKiBtYWxsb2MgYXJlYQkJCSAgICAqLwotCXN1YglyMCwgcjAsICNDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvCQkJICAgICovCisJc3ViCXIwLCByMCwgI0dFTkVSQVRFRF9HQkxfREFUQV9TSVpFIC8qIGJkaW5mbwkJCSAgICAqLwogI2lmZGVmIENPTkZJR19VU0VfSVJRCiAJc3ViCXIwLCByMCwgIyhDT05GSUdfU1RBQ0tTSVpFX0lSUStDT05GSUdfU1RBQ0tTSVpFX0ZJUSkKICNlbmRpZgpAQCAtNTEwLDcgKzUxMyw3IEBACiAjZWxzZQogCWFkcglyMiwgX3N0YXJ0CiAJc3ViCXIyLCByMiwgIyhDT05GSUdfU1lTX01BTExPQ19MRU4pCi0Jc3ViCXIyLCByMiwgIyhDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUrOCkJQCBzZXQgYmFzZSAyIHdvcmRzIGludG8gYWJvcnQgc3RhY2sKKwlzdWIJcjIsIHIyLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKzgpCUAgc2V0IGJhc2UgMiB3b3JkcyBpbnRvIGFib3J0IHN0YWNrCiAjZW5kaWYKIAlsZG1pYQlyMiwge3IyIC0gcjN9CQkJQCBnZXQgdmFsdWVzIGZvciAiYWJvcnRlZCIgcGMgYW5kIGNwc3IgKGludG8gcGFybSByZWdzKQogCWFkZAlyMCwgc3AsICNTX0ZSQU1FX1NJWkUJCUAgZ3JhYiBwb2ludGVyIHRvIG9sZCBzdGFjawpAQCAtNTQ3LDcgKzU1MCw3IEBACiAjZWxzZQogCWFkcglyMTMsIF9zdGFydAkJCUAgc2V0dXAgb3VyIG1vZGUgc3RhY2sgKGVudGVyIGluIGJhbmtlZCBtb2RlKQogCXN1YglyMTMsIHIxMywgIyhDT05GSUdfU1RBQ0tTSVpFK0NPTkZJR19TWVNfTUFMTE9DX0xFTikJQCBtb3ZlIHBhc3QgbWFsbG9jIHBvb2wKLQlzdWIJcjEzLCByMTMsICMoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKzgpIEAgbW92ZSB0byByZXNlcnZlZCBhIGNvdXBsZSBzcG90cyBmb3IgYWJvcnQgc3RhY2sKKwlzdWIJcjEzLCByMTMsICMoR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUrOCkgQCBtb3ZlIHRvIHJlc2VydmVkIGEgY291cGxlIHNwb3RzIGZvciBhYm9ydCBzdGFjawogI2VuZGlmCiAKIAlzdHIJbHIsIFtyMTNdCQkJQCBzYXZlIGNhbGxlciBsciBpbiBwb3NpdGlvbiAwIG9mIHNhdmVkIHN0YWNrCkBAIC01NjksNyArNTcyLDcgQEAKICNlbHNlCiAJbGRyCXIwLCBfYXJtYm9vdF9zdGFydAkJQCBnZXQgZGF0YSByZWdpb25zIHN0YXJ0CiAJc3ViCXIwLCByMCwgIyhDT05GSUdfU1lTX01BTExPQ19MRU4pCUAgbW92ZSBwYXN0IG1hbGxvYyBwb29sCi0Jc3ViCXIwLCByMCwgIyhDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUrOCkJQCBtb3ZlIHBhc3QgZ2JsIGFuZCBhIGNvdXBsZSBzcG90cyBmb3IgYWJvcnQgc3RhY2sKKwlzdWIJcjAsIHIwLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKzgpCUAgbW92ZSBwYXN0IGdibCBhbmQgYSBjb3VwbGUgc3BvdHMgZm9yIGFib3J0IHN0YWNrCiAjZW5kaWYKIAlzdHIJbHIsIFtyMF0JCQlAIHNhdmUgY2FsbGVyIGxyIGluIHBvc2l0aW9uIDAgb2Ygc2F2ZWQgc3RhY2sKIAltcnMJcjAsIHNwc3IJCQlAIGdldCB0aGUgc3BzcgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY3B1L2FybTExNzYvc3RhcnQuUyBiL2FyY2gvYXJtL2NwdS9hcm0xMTc2L3N0YXJ0LlMKaW5kZXggMjRlNWJmNC4uN2YzMmRiNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY3B1L2FybTExNzYvc3RhcnQuUworKysgYi9hcmNoL2FybS9jcHUvYXJtMTE3Ni9zdGFydC5TCkBAIC0zMCw2ICszMCw3IEBACiAgKiBCYXNlIGNvZGVzIGJ5IHNjc3VoIChzYy5zdWgpCiAgKi8KIAorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8dmVyc2lvbi5oPgogI2lmZGVmIENPTkZJR19FTkFCTEVfTU1VCkBAIC0xMTUsMTQgKzExNiw0NiBAQAogCiAvKgogICogVGhlc2UgYXJlIGRlZmluZWQgaW4gdGhlIGJvYXJkLXNwZWNpZmljIGxpbmtlciBzY3JpcHQuCisgKiBTdWJ0cmFjdGluZyBfc3RhcnQgZnJvbSB0aGVtIGxldHMgdGhlIGxpbmtlciBwdXQgdGhlaXIKKyAqIHJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSBleGVjdXRhYmxlIGluc3RlYWQgb2YgbGVhdmluZworICogdGhlbSBudWxsLgogICovCi0uZ2xvYmwgX2Jzc19zdGFydAotX2Jzc19zdGFydDoKLQkud29yZCBfX2Jzc19zdGFydAogCi0uZ2xvYmwgX2Jzc19lbmQKLV9ic3NfZW5kOgotCS53b3JkIF9lbmQKKy5nbG9ibCBfYnNzX3N0YXJ0X29mcworX2Jzc19zdGFydF9vZnM6CisJLndvcmQgX19ic3Nfc3RhcnQgLSBfc3RhcnQKKworLmdsb2JsIF9ic3NfZW5kX29mcworX2Jzc19lbmRfb2ZzOgorCS53b3JkIF9lbmQgLSBfc3RhcnQKKworLmdsb2JsIF9kYXRhcmVsX3N0YXJ0X29mcworX2RhdGFyZWxfc3RhcnRfb2ZzOgorCS53b3JkIF9fZGF0YXJlbF9zdGFydCAtIF9zdGFydAorCisuZ2xvYmwgX2RhdGFyZWxyb2xvY2FsX3N0YXJ0X29mcworX2RhdGFyZWxyb2xvY2FsX3N0YXJ0X29mczoKKwkud29yZCBfX2RhdGFyZWxyb2xvY2FsX3N0YXJ0IC0gX3N0YXJ0CisKKy5nbG9ibCBfZGF0YXJlbGxvY2FsX3N0YXJ0X29mcworX2RhdGFyZWxsb2NhbF9zdGFydF9vZnM6CisJLndvcmQgX19kYXRhcmVsbG9jYWxfc3RhcnQgLSBfc3RhcnQKKworLmdsb2JsIF9kYXRhcmVscm9fc3RhcnRfb2ZzCitfZGF0YXJlbHJvX3N0YXJ0X29mczoKKwkud29yZCBfX2RhdGFyZWxyb19zdGFydCAtIF9zdGFydAorCisuZ2xvYmwgX3JlbF9keW5fc3RhcnRfb2ZzCitfcmVsX2R5bl9zdGFydF9vZnM6CisJLndvcmQgX19yZWxfZHluX3N0YXJ0IC0gX3N0YXJ0CisKKy5nbG9ibCBfcmVsX2R5bl9lbmRfb2ZzCitfcmVsX2R5bl9lbmRfb2ZzOgorCS53b3JkIF9fcmVsX2R5bl9lbmQgLSBfc3RhcnQKKworLmdsb2JsIF9keW5zeW1fc3RhcnRfb2ZzCitfZHluc3ltX3N0YXJ0X29mczoKKwkud29yZCBfX2R5bnN5bV9zdGFydCAtIF9zdGFydAogCiAjaWYgIWRlZmluZWQoQ09ORklHX1NZU19BUk1fV0lUSE9VVF9SRUxPQykKIC8qIElSUSBzdGFjayBtZW1vcnkgKGNhbGN1bGF0ZWQgYXQgcnVuLXRpbWUpICsgOCBieXRlcyAqLwpAQCAtMTMwLDMwICsxNjMsNiBAQAogSVJRX1NUQUNLX1NUQVJUX0lOOgogCS53b3JkCTB4MGJhZGMwZGUKIAotLmdsb2JsIF9kYXRhcmVsX3N0YXJ0Ci1fZGF0YXJlbF9zdGFydDoKLQkud29yZCBfX2RhdGFyZWxfc3RhcnQKLQotLmdsb2JsIF9kYXRhcmVscm9sb2NhbF9zdGFydAotX2RhdGFyZWxyb2xvY2FsX3N0YXJ0OgotCS53b3JkIF9fZGF0YXJlbHJvbG9jYWxfc3RhcnQKLQotLmdsb2JsIF9kYXRhcmVsbG9jYWxfc3RhcnQKLV9kYXRhcmVsbG9jYWxfc3RhcnQ6Ci0JLndvcmQgX19kYXRhcmVsbG9jYWxfc3RhcnQKLQotLmdsb2JsIF9kYXRhcmVscm9fc3RhcnQKLV9kYXRhcmVscm9fc3RhcnQ6Ci0JLndvcmQgX19kYXRhcmVscm9fc3RhcnQKLQotLmdsb2JsIF9nb3Rfc3RhcnQKLV9nb3Rfc3RhcnQ6Ci0JLndvcmQgX19nb3Rfc3RhcnQKLQotLmdsb2JsIF9nb3RfZW5kCi1fZ290X2VuZDoKLQkud29yZCBfX2dvdF9lbmQKLQogLyoKICAqIHRoZSBhY3R1YWwgcmVzZXQgY29kZQogICovCkBAIC0yNzQsOSArMjgzLDggQEAKIAogCWFkcglyMCwgX3N0YXJ0CiAJbGRyCXIyLCBfVEVYVF9CQVNFCi0JbGRyCXIzLCBfYnNzX3N0YXJ0Ci0Jc3ViCXIyLCByMywgcjIJCS8qIHIyIDwtIHNpemUgb2YgYXJtYm9vdAkgICAgKi8KLQlhZGQJcjIsIHIwLCByMgkJLyogcjIgPC0gc291cmNlIGVuZCBhZGRyZXNzCSAgICAqLworCWxkcglyMywgX2Jzc19zdGFydF9vZnMKKwlhZGQJcjIsIHIwLCByMwkJLyogcjIgPC0gc291cmNlIGVuZCBhZGRyZXNzCSAgICAqLwogCWNtcAlyMCwgcjYKIAliZXEJY2xlYXJfYnNzCiAKQEAgLTI4OCwyNCArMjk2LDQ0IEBACiAJYmxvCWNvcHlfbG9vcAogCiAjaWZuZGVmIENPTkZJR19QUkVMT0FERVIKLQkvKiBmaXggZ290IGVudHJpZXMgKi8KLQlsZHIJcjEsIF9URVhUX0JBU0UJCS8qIFRleHQgYmFzZSAqLwotCW1vdglyMCwgcjcJCQkvKiByZWxvYyBhZGRyICovCi0JbGRyCXIyLCBfZ290X3N0YXJ0CQkvKiBhZGRyIGluIEZsYXNoICovCi0JbGRyCXIzLCBfZ290X2VuZAkJLyogYWRkciBpbiBGbGFzaCAqLwotCXN1YglyMywgcjMsIHIxCi0JYWRkCXIzLCByMywgcjAKLQlzdWIJcjIsIHIyLCByMQotCWFkZAlyMiwgcjIsIHIwCi0KKwkvKgorCSAqIGZpeCAucmVsLmR5biByZWxvY2F0aW9ucworCSAqLworCWxkcglyMCwgX1RFWFRfQkFTRQkJLyogcjAgPC0gVGV4dCBiYXNlICovCisJc3ViCXI5LCByNywgcjAJCS8qIHI5IDwtIHJlbG9jYXRpb24gb2Zmc2V0ICovCisJbGRyCXIxMCwgX2R5bnN5bV9zdGFydF9vZnMJLyogcjEwIDwtIHN5bSB0YWJsZSBvZnMgKi8KKwlhZGQJcjEwLCByMTAsIHIwCQkvKiByMTAgPC0gc3ltIHRhYmxlIGluIEZMQVNIICovCisJbGRyCXIyLCBfcmVsX2R5bl9zdGFydF9vZnMJLyogcjIgPC0gcmVsIGR5biBzdGFydCBvZnMgKi8KKwlhZGQJcjIsIHIyLCByMAkJLyogcjIgPC0gcmVsIGR5biBzdGFydCBpbiBGTEFTSCAqLworCWxkcglyMywgX3JlbF9keW5fZW5kX29mcwkvKiByMyA8LSByZWwgZHluIGVuZCBvZnMgKi8KKwlhZGQJcjMsIHIzLCByMAkJLyogcjMgPC0gcmVsIGR5biBlbmQgaW4gRkxBU0ggKi8KIGZpeGxvb3A6Ci0JbGRyCXI0LCBbcjJdCi0Jc3ViCXI0LCByNCwgcjEKLQlhZGQJcjQsIHI0LCByMAotCXN0cglyNCwgW3IyXQotCWFkZAlyMiwgcjIsICM0CisJbGRyCXIwLCBbcjJdCS8qIHIwIDwtIGxvY2F0aW9uIHRvIGZpeCB1cCwgSU4gRkxBU0ghICovCisJYWRkCXIwLCByMCwgcjkJLyogcjAgPC0gbG9jYXRpb24gdG8gZml4IHVwIGluIFJBTSAqLworCWxkcglyMSwgW3IyLCAjNF0KKwlhbmQJcjgsIHIxLCAjMHhmZgorCWNtcAlyOCwgIzIzCQkvKiByZWxhdGl2ZSBmaXh1cD8gKi8KKwliZXEJZml4cmVsCisJY21wCXI4LCAjMgkJLyogYWJzb2x1dGUgZml4dXA/ICovCisJYmVxCWZpeGFicworCS8qIGlnbm9yZSB1bmtub3duIHR5cGUgb2YgZml4dXAgKi8KKwliCWZpeG5leHQKK2ZpeGFiczoKKwkvKiBhYnNvbHV0ZSBmaXg6IHNldCBsb2NhdGlvbiB0byAob2Zmc2V0KSBzeW1ib2wgdmFsdWUgKi8KKwltb3YJcjEsIHIxLCBMU1IgIzQJCS8qIHIxIDwtIHN5bWJvbCBpbmRleCBpbiAuZHluc3ltICovCisJYWRkCXIxLCByMTAsIHIxCQkvKiByMSA8LSBhZGRyZXNzIG9mIHN5bWJvbCBpbiB0YWJsZSAqLworCWxkcglyMSwgW3IxLCAjNF0JCS8qIHIxIDwtIHN5bWJvbCB2YWx1ZSAqLworCWFkZAlyMSwgcjEsIHI5CQkvKiByMSA8LSByZWxvY2F0ZWQgc3ltIGFkZHIgKi8KKwliCWZpeG5leHQKK2ZpeHJlbDoKKwkvKiByZWxhdGl2ZSBmaXg6IGluY3JlYXNlIGxvY2F0aW9uIGJ5IG9mZnNldCAqLworCWxkcglyMSwgW3IwXQorCWFkZAlyMSwgcjEsIHI5CitmaXhuZXh0OgorCXN0cglyMSwgW3IwXQorCWFkZAlyMiwgcjIsICM4CS8qIGVhY2ggcmVsLmR5biBlbnRyeSBpcyA4IGJ5dGVzICovCiAJY21wCXIyLCByMwotCWJuZQlmaXhsb29wCisJYmxvCWZpeGxvb3AKICNlbmRpZgogI2VuZGlmCS8qICNpZm5kZWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QgKi8KIApAQCAtMzQ5LDEzICszNzcsMTEgQEAKIAogY2xlYXJfYnNzOgogI2lmbmRlZiBDT05GSUdfUFJFTE9BREVSCi0JbGRyCXIwLCBfYnNzX3N0YXJ0Ci0JbGRyCXIxLCBfYnNzX2VuZAorCWxkcglyMCwgX2Jzc19zdGFydF9vZnMKKwlsZHIJcjEsIF9ic3NfZW5kX29mcwogCWxkcglyMywgX1RFWFRfQkFTRQkJLyogVGV4dCBiYXNlICovCiAJbW92CXI0LCByNwkJCS8qIHJlbG9jIGFkZHIgKi8KLQlzdWIJcjAsIHIwLCByMwogCWFkZAlyMCwgcjAsIHI0Ci0Jc3ViCXIxLCByMSwgcjMKIAlhZGQJcjEsIHIxLCByNAogCW1vdglyMiwgIzB4MDAwMDAwMDAJCS8qIGNsZWFyCQkJICAgICovCiAKQEAgLTM3NywxOCArNDAzLDIwIEBACiAKIF9uYW5kX2Jvb3Q6IC53b3JkIG5hbmRfYm9vdAogI2Vsc2UKLQlsZHIJcjAsIF9URVhUX0JBU0UKLQlsZHIJcjIsIF9ib2FyZF9pbml0X3IKLQlzdWIJcjIsIHIyLCByMAotCWFkZAlyMiwgcjIsIHI3CS8qIHBvc2l0aW9uIGZyb20gYm9hcmRfaW5pdF9yIGluIFJBTSAqLworCWxkcglyMCwgX2JvYXJkX2luaXRfcl9vZnMKKwlhZHIJcjEsIF9zdGFydAorCWFkZAlsciwgcjAsIHIxCisjaWZuZGVmIENPTkZJR19TS0lQX1JFTE9DQVRFX1VCT09UCisJYWRkICAgICBsciwgbHIsIHI5CisjZW5kaWYKIAkvKiBzZXR1cCBwYXJhbWV0ZXJzIGZvciBib2FyZF9pbml0X3IgKi8KIAltb3YJcjAsIHI1CQkvKiBnZF90ICovCiAJbW92CXIxLCByNwkJLyogZGVzdF9hZGRyICovCiAJLyoganVtcCB0byBpdCAuLi4gKi8KLQltb3YJbHIsIHIyCiAJbW92CXBjLCBscgogCi1fYm9hcmRfaW5pdF9yOiAud29yZCBib2FyZF9pbml0X3IKK19ib2FyZF9pbml0X3Jfb2ZzOgorCS53b3JkIGJvYXJkX2luaXRfciAtIF9zdGFydAogI2VuZGlmCiAKICNlbHNlIC8qICNpZiAhZGVmaW5lZChDT05GSUdfU1lTX0FSTV9XSVRIT1VUX1JFTE9DKSAqLwpAQCAtNTQ2LDcgKzU3NCw3IEBACiBzdGFja19zZXR1cDoKIAlsZHIJcjAsID1DT05GSUdfU1lTX1VCT09UX0JBU0UJLyogYmFzZSBvZiBjb3B5IGluIERSQU0JICAgICovCiAJc3ViCXIwLCByMCwgI0NPTkZJR19TWVNfTUFMTE9DX0xFTgkvKiBtYWxsb2MgYXJlYSAgICAgICAgICAgICAgICAgICAgICAqLwotCXN1YglyMCwgcjAsICNDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwlzdWIJcjAsIHIwLCAjR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAlzdWIJc3AsIHIwLCAjMTIJCS8qIGxlYXZlIDMgd29yZHMgZm9yIGFib3J0LXN0YWNrICAgICovCiAJYmljCXNwLCBzcCwgIzcJCS8qIDgtYnl0ZSBhbGlnbm1lbnQgZm9yIEFCSSBjb21wbGlhbmNlICovCiAKQEAgLTY2Myw3ICs2OTEsNyBAQAogCWxkcglyMiwgX2FybWJvb3Rfc3RhcnQKIAlzdWIJcjIsIHIyLCAjKENPTkZJR19TWVNfTUFMTE9DX0xFTikKIAkvKiBzZXQgYmFzZSAyIHdvcmRzIGludG8gYWJvcnQgc3RhY2sgKi8KLQlzdWIJcjIsIHIyLCAjKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSs4KQorCXN1YglyMiwgcjIsICMoR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUrOCkKICNlbHNlCiAJbGRyCXIyLCBJUlFfU1RBQ0tfU1RBUlRfSU4KICNlbmRpZgpAQCAtNjg3LDcgKzcxNSw3IEBACiAJLyogbW92ZSBwYXN0IG1hbGxvYyBwb29sICovCiAJc3ViCXIxMywgcjEzLCAjKENPTkZJR19TWVNfTUFMTE9DX0xFTikKIAkvKiBtb3ZlIHRvIHJlc2VydmVkIGEgY291cGxlIHNwb3RzIGZvciBhYm9ydCBzdGFjayAqLwotCXN1YglyMTMsIHIxMywgIyhDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgKyA4KQorCXN1YglyMTMsIHIxMywgIyhHRU5FUkFURURfR0JMX0RBVEFfU0laRSArIDgpCiAjZWxzZQogCWxkcglyMTMsIElSUV9TVEFDS19TVEFSVF9JTgkJQCBzZXR1cCBvdXIgbW9kZSBzdGFjawogI2VuZGlmCkBAIC03MjEsNyArNzQ5LDcgQEAKIAkvKiBtb3ZlIHBhc3QgbWFsbG9jIHBvb2wgKi8KIAlzdWIJcjAsIHIwLCAjKENPTkZJR19TWVNfTUFMTE9DX0xFTikKIAkvKiBtb3ZlIHBhc3QgZ2JsIGFuZCBhIGNvdXBsZSBzcG90cyBmb3IgYWJvcnQgc3RhY2sgKi8KLQlzdWIJcjAsIHIwLCAjKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSArIDgpCisJc3ViCXIwLCByMCwgIyhHRU5FUkFURURfR0JMX0RBVEFfU0laRSArIDgpCiAjZWxzZQogCWxkcglyMTMsIElSUV9TVEFDS19TVEFSVF9JTgkJQCBzZXR1cCBvdXIgbW9kZSBzdGFjawogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jcHUvYXJtMTE3Ni91LWJvb3QubGRzIGIvYXJjaC9hcm0vY3B1L2FybTExNzYvdS1ib290LmxkcwppbmRleCBmYTY0MGVlLi5kOWVkOTU0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9jcHUvYXJtMTE3Ni91LWJvb3QubGRzCisrKyBiL2FyY2gvYXJtL2NwdS9hcm0xMTc2L3UtYm9vdC5sZHMKQEAgLTUxLDExICs1MSwxNCBAQAogCQkqKC5kYXRhLnJlbC5ybykKIAl9CiAKLQlfX2dvdF9zdGFydCA9IC47CiAJLiA9IEFMSUdOKDQpOwotCS5nb3QgOiB7ICooLmdvdCkgfQorCV9fcmVsX2R5bl9zdGFydCA9IC47CisJLnJlbC5keW4gOiB7ICooLnJlbC5keW4pIH0KKwlfX3JlbF9keW5fZW5kID0gLjsKIAotCV9fZ290X2VuZCA9IC47CisJX19keW5zeW1fc3RhcnQgPSAuOworCS5keW5zeW0gOiB7ICooLmR5bnN5bSkgfQorCiAJLiA9IC47CiAJX191X2Jvb3RfY21kX3N0YXJ0ID0gLjsKIAkudV9ib290X2NtZCA6IHsgKigudV9ib290X2NtZCkgfQpAQCAtNjUsNCArNjgsMTAgQEAKIAlfX2Jzc19zdGFydCA9IC47CiAJLmJzcyAoTk9MT0FEKSA6IHsgKiguYnNzKSAuID0gQUxJR04oNCk7IH0KIAlfZW5kID0gLjsKKworCS9ESVNDQVJELyA6IHsgKiguZHluc3RyKikgfQorCS9ESVNDQVJELyA6IHsgKiguZHluYW1pYyopIH0KKwkvRElTQ0FSRC8gOiB7ICooLnBsdCopIH0KKwkvRElTQ0FSRC8gOiB7ICooLmludGVycCopIH0KKwkvRElTQ0FSRC8gOiB7ICooLmdudSopIH0KIH0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NwdS9hcm03MjB0L3N0YXJ0LlMgYi9hcmNoL2FybS9jcHUvYXJtNzIwdC9zdGFydC5TCmluZGV4IGQ5MzkxMWYuLjQxYzE1MTkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NwdS9hcm03MjB0L3N0YXJ0LlMKKysrIGIvYXJjaC9hcm0vY3B1L2FybTcyMHQvc3RhcnQuUwpAQCAtMjMsNyArMjMsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0KKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPHZlcnNpb24uaD4KICNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KQEAgLTIyMiw3ICsyMjIsNyBAQAogCXN0cglyNCwgW3IyXQogCWFkZAlyMiwgcjIsICM0CiAJY21wCXIyLCByMwotCWJuZQlmaXhsb29wCisJYmxvCWZpeGxvb3AKICNlbmRpZgogI2VuZGlmCS8qICNpZm5kZWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QgKi8KIApAQCAtMzI3LDcgKzMyNyw3IEBACiBzdGFja19zZXR1cDoKIAlsZHIJcjAsIF9URVhUX0JBU0UJCS8qIHVwcGVyIDEyOCBLaUI6IHJlbG9jYXRlZCB1Ym9vdCAgICovCiAJc3ViCXIwLCByMCwgI0NPTkZJR19TWVNfTUFMTE9DX0xFTiAvKiBtYWxsb2MgYXJlYQkJCSAgICAqLwotCXN1YglyMCwgcjAsICNDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvCQkJICAgICovCisJc3ViCXIwLCByMCwgI0dFTkVSQVRFRF9HQkxfREFUQV9TSVpFIC8qIGJkaW5mbwkJCSAgICAqLwogI2lmZGVmIENPTkZJR19VU0VfSVJRCiAJc3ViCXIwLCByMCwgIyhDT05GSUdfU1RBQ0tTSVpFX0lSUStDT05GSUdfU1RBQ0tTSVpFX0ZJUSkKICNlbmRpZgpAQCAtNjA5LDcgKzYwOSw3IEBACiAjaWYgZGVmaW5lZChDT05GSUdfU1lTX0FSTV9XSVRIT1VUX1JFTE9DKQogCWxkcglyMiwgX2FybWJvb3Rfc3RhcnQKIAlzdWIJcjIsIHIyLCAjKENPTkZJR19TVEFDS1NJWkUrQ09ORklHX1NZU19NQUxMT0NfTEVOKQotCXN1YglyMiwgcjIsICMoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKzgpCUAgc2V0IGJhc2UgMiB3b3JkcyBpbnRvIGFib3J0IHN0YWNrCisJc3ViCXIyLCByMiwgIyhHRU5FUkFURURfR0JMX0RBVEFfU0laRSs4KQlAIHNldCBiYXNlIDIgd29yZHMgaW50byBhYm9ydCBzdGFjawogI2Vsc2UKIAlsZHIJcjIsIElSUV9TVEFDS19TVEFSVF9JTgogI2VuZGlmCkBAIC02NDYsNyArNjQ2LDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MpCiAJbGRyCXIxMywgX2FybWJvb3Rfc3RhcnQJCUAgc2V0dXAgb3VyIG1vZGUgc3RhY2sKIAlzdWIJcjEzLCByMTMsICMoQ09ORklHX1NUQUNLU0laRStDT05GSUdfU1lTX01BTExPQ19MRU4pCi0Jc3ViCXIxMywgcjEzLCAjKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSs4KSBAIHJlc2VydmVkIGEgY291cGxlIHNwb3RzIGluIGFib3J0IHN0YWNrCisJc3ViCXIxMywgcjEzLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKzgpIEAgcmVzZXJ2ZWQgYSBjb3VwbGUgc3BvdHMgaW4gYWJvcnQgc3RhY2sKICNlbHNlCiAJbGRyCXIxMywgSVJRX1NUQUNLX1NUQVJUX0lOCQlAIHNldHVwIG91ciBtb2RlIHN0YWNrCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NwdS9hcm05MjB0L3N0YXJ0LlMgYi9hcmNoL2FybS9jcHUvYXJtOTIwdC9zdGFydC5TCmluZGV4IDM0M2E3NjAuLmYwMjc0YjEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NwdS9hcm05MjB0L3N0YXJ0LlMKKysrIGIvYXJjaC9hcm0vY3B1L2FybTkyMHQvc3RhcnQuUwpAQCAtMjQsNiArMjQsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxjb25maWcuaD4KIApAQCAtMjY3LDcgKzI2OCw3IEBACiAJc3RyCXI0LCBbcjJdCiAJYWRkCXIyLCByMiwgIzQKIAljbXAJcjIsIHIzCi0JYm5lCWZpeGxvb3AKKwlibG8JZml4bG9vcAogI2VuZGlmCiAjZW5kaWYJLyogI2lmbmRlZiBDT05GSUdfU0tJUF9SRUxPQ0FURV9VQk9PVCAqLwogCkBAIC00MTQsNyArNDE1LDcgQEAKIHN0YWNrX3NldHVwOgogCWxkcglyMCwgX1RFWFRfQkFTRQkJLyogdXBwZXIgMTI4IEtpQjogcmVsb2NhdGVkIHVib290ICAgKi8KIAlzdWIJcjAsIHIwLCAjQ09ORklHX1NZU19NQUxMT0NfTEVOCS8qIG1hbGxvYyBhcmVhICAgICAgICAgICAgICAqLwotCXN1YglyMCwgcjAsICNDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvICAgICAgICAgICAgICAgICAqLworCXN1YglyMCwgcjAsICNHRU5FUkFURURfR0JMX0RBVEFfU0laRSAvKiBiZGluZm8gICAgICAgICAgICAgICAgICovCiAjaWZkZWYgQ09ORklHX1VTRV9JUlEKIAlzdWIJcjAsIHIwLCAjKENPTkZJR19TVEFDS1NJWkVfSVJRK0NPTkZJR19TVEFDS1NJWkVfRklRKQogI2VuZGlmCkBAIC01MjksNyArNTMwLDcgQEAKIAlzdWIJcjIsIHIyLCAjKENPTkZJR19TVEFDS1NJWkUpCiAJc3ViCXIyLCByMiwgIyhDT05GSUdfU1lTX01BTExPQ19MRU4pCiAJLyogc2V0IGJhc2UgMiB3b3JkcyBpbnRvIGFib3J0IHN0YWNrICovCi0Jc3ViCXIyLCByMiwgIyhDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUrOCkKKwlzdWIJcjIsIHIyLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKzgpCiAjZWxzZQogCWxkcglyMiwgSVJRX1NUQUNLX1NUQVJUX0lOCiAjZW5kaWYKQEAgLTU2OSw3ICs1NzAsNyBAQAogCXN1YglyMTMsIHIxMywgIyhDT05GSUdfU1RBQ0tTSVpFKQogCXN1YglyMTMsIHIxMywgIyhDT05GSUdfU1lTX01BTExPQ19MRU4pCiAJLyogcmVzZXJ2ZSBhIGNvdXBsZSBzcG90cyBpbiBhYm9ydCBzdGFjayAqLwotCXN1YglyMTMsIHIxMywgIyhDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUrOCkKKwlzdWIJcjEzLCByMTMsICMoR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUrOCkKICNlbHNlCiAJbGRyCXIxMywgSVJRX1NUQUNLX1NUQVJUX0lOCQlAIHNldHVwIG91ciBtb2RlIHN0YWNrCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NwdS9hcm05MjV0L3N0YXJ0LlMgYi9hcmNoL2FybS9jcHUvYXJtOTI1dC9zdGFydC5TCmluZGV4IGNmMThhMDEuLjJhZDJkZjggMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NwdS9hcm05MjV0L3N0YXJ0LlMKKysrIGIvYXJjaC9hcm0vY3B1L2FybTkyNXQvc3RhcnQuUwpAQCAtMzAsNyArMzAsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0KKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPHZlcnNpb24uaD4KIApAQCAtMjU5LDcgKzI1OSw3IEBACiAJc3RyCXI0LCBbcjJdCiAJYWRkCXIyLCByMiwgIzQKIAljbXAJcjIsIHIzCi0JYm5lCWZpeGxvb3AKKwlibG8JZml4bG9vcAogI2VuZGlmCiAjZW5kaWYJLyogI2lmbmRlZiBDT05GSUdfU0tJUF9SRUxPQ0FURV9VQk9PVCAqLwogCkBAIC0zODUsNyArMzg1LDcgQEAKIHN0YWNrX3NldHVwOgogCWxkcglyMCwgX1RFWFRfQkFTRQkJLyogdXBwZXIgMTI4IEtpQjogcmVsb2NhdGVkIHVib290ICAgKi8KIAlzdWIJcjAsIHIwLCAjQ09ORklHX1NZU19NQUxMT0NfTEVOCS8qIG1hbGxvYyBhcmVhICAgICAgICAgICAgICAgICAgICAgICovCi0Jc3ViCXIwLCByMCwgI0NPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAvKiBiZGluZm8gICAgICAgICAgICAgICAgICAgICAgICAqLworCXN1YglyMCwgcjAsICNHRU5FUkFURURfR0JMX0RBVEFfU0laRSAvKiBiZGluZm8gICAgICAgICAgICAgICAgICAgICAgICAqLwogI2lmZGVmIENPTkZJR19VU0VfSVJRCiAJc3ViCXIwLCByMCwgIyhDT05GSUdfU1RBQ0tTSVpFX0lSUStDT05GSUdfU1RBQ0tTSVpFX0ZJUSkKICNlbmRpZgpAQCAtNDkyLDcgKzQ5Miw3IEBACiAjaWYgZGVmaW5lZChDT05GSUdfU1lTX0FSTV9XSVRIT1VUX1JFTE9DKQogCWxkcglyMiwgX2FybWJvb3Rfc3RhcnQKIAlzdWIJcjIsIHIyLCAjKENPTkZJR19TVEFDS1NJWkUrQ09ORklHX1NZU19NQUxMT0NfTEVOKQotCXN1YglyMiwgcjIsICMoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKzgpICBAIHNldCBiYXNlIDIgd29yZHMgaW50byBhYm9ydCBzdGFjaworCXN1YglyMiwgcjIsICMoR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUrOCkgIEAgc2V0IGJhc2UgMiB3b3JkcyBpbnRvIGFib3J0IHN0YWNrCiAjZWxzZQogCWxkcglyMiwgSVJRX1NUQUNLX1NUQVJUX0lOCiAjZW5kaWYKQEAgLTUyOSw3ICs1MjksNyBAQAogI2lmIGRlZmluZWQoQ09ORklHX1NZU19BUk1fV0lUSE9VVF9SRUxPQykKIAlsZHIJcjEzLCBfYXJtYm9vdF9zdGFydAkJQCBzZXR1cCBvdXIgbW9kZSBzdGFjawogCXN1YglyMTMsIHIxMywgIyhDT05GSUdfU1RBQ0tTSVpFK0NPTkZJR19TWVNfTUFMTE9DX0xFTikKLQlzdWIJcjEzLCByMTMsICMoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKzgpIEAgcmVzZXJ2ZWQgYSBjb3VwbGUgc3BvdHMgaW4gYWJvcnQgc3RhY2sKKwlzdWIJcjEzLCByMTMsICMoR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUrOCkgQCByZXNlcnZlZCBhIGNvdXBsZSBzcG90cyBpbiBhYm9ydCBzdGFjawogI2Vsc2UKIAlsZHIJcjEzLCBJUlFfU1RBQ0tfU1RBUlRfSU4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY3B1L2FybTkyNmVqcy9zdGFydC5TIGIvYXJjaC9hcm0vY3B1L2FybTkyNmVqcy9zdGFydC5TCmluZGV4IDg2M2RlM2IuLjczOTc4ODIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NwdS9hcm05MjZlanMvc3RhcnQuUworKysgYi9hcmNoL2FybS9jcHUvYXJtOTI2ZWpzL3N0YXJ0LlMKQEAgLTMxLDcgKzMxLDcgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAotCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDx2ZXJzaW9uLmg+CkBAIC0yMjUsMTMgKzIyNSwxMyBAQAogCWxkcglyMywgX3JlbF9keW5fZW5kX29mcwkvKiByMyA8LSByZWwgZHluIGVuZCBvZnMgKi8KIAlhZGQJcjMsIHIzLCByMAkJLyogcjMgPC0gcmVsIGR5biBlbmQgaW4gRkxBU0ggKi8KIGZpeGxvb3A6Ci0JbGRyCXIwLCBbcjJdCS8qIHIwIDwtIGxvY2F0aW9uIHRvIGZpeCB1cCwgSU4gRkxBU0ghICovCi0JYWRkCXIwLCByOQkJLyogcjAgPC0gbG9jYXRpb24gdG8gZml4IHVwIGluIFJBTSAqLworCWxkcglyMCwgW3IyXQkJLyogcjAgPC0gbG9jYXRpb24gdG8gZml4IHVwLCBJTiBGTEFTSCEgKi8KKwlhZGQJcjAsIHIwLCByOQkJLyogcjAgPC0gbG9jYXRpb24gdG8gZml4IHVwIGluIFJBTSAqLwogCWxkcglyMSwgW3IyLCAjNF0KIAlhbmQJcjgsIHIxLCAjMHhmZgotCWNtcAlyOCwgIzIzCQkvKiByZWxhdGl2ZSBmaXh1cD8gKi8KKwljbXAJcjgsICMyMwkJCS8qIHJlbGF0aXZlIGZpeHVwPyAqLwogCWJlcQlmaXhyZWwKLQljbXAJcjgsICMyCQkvKiBhYnNvbHV0ZSBmaXh1cD8gKi8KKwljbXAJcjgsICMyCQkJLyogYWJzb2x1dGUgZml4dXA/ICovCiAJYmVxCWZpeGFicwogCS8qIGlnbm9yZSB1bmtub3duIHR5cGUgb2YgZml4dXAgKi8KIAliCWZpeG5leHQKQEAgLTI0OCw3ICsyNDgsNyBAQAogCWFkZAlyMSwgcjEsIHI5CiBmaXhuZXh0OgogCXN0cglyMSwgW3IwXQotCWFkZAlyMiwgcjIsICM4CS8qIGVhY2ggcmVsLmR5biBlbnRyeSBpcyA4IGJ5dGVzICovCisJYWRkCXIyLCByMiwgIzgJCS8qIGVhY2ggcmVsLmR5biBlbnRyeSBpcyA4IGJ5dGVzICovCiAJY21wCXIyLCByMwogCWJsbwlmaXhsb29wCiAjZW5kaWYKQEAgLTI4Niw4ICsyODYsMTAgQEAKICNlbHNlCiAJbGRyCXIwLCBfYm9hcmRfaW5pdF9yX29mcwogCWFkcglyMSwgX3N0YXJ0Ci0JYWRkCXIwLCByMCwgcjEKLQlhZGQJbHIsIHIwLCByOQorCWFkZAlsciwgcjAsIHIxCisjaWZuZGVmIENPTkZJR19TS0lQX1JFTE9DQVRFX1VCT09UCisJYWRkCWxyLCBsciwgcjkKKyNlbmRpZgogCS8qIHNldHVwIHBhcmFtZXRlcnMgZm9yIGJvYXJkX2luaXRfciAqLwogCW1vdglyMCwgcjUJCS8qIGdkX3QgKi8KIAltb3YJcjEsIHI3CQkvKiBkZXN0X2FkZHIgKi8KQEAgLTM0OSw3ICszNTEsNyBAQAogCXN1YglzcCwgcjAsICMxMjgJCS8qIGxlYXZlIDMyIHdvcmRzIGZvciBhYm9ydC1zdGFjayAgICovCiAjaWZuZGVmIENPTkZJR19QUkVMT0FERVIKIAlzdWIJcjAsIHIwLCAjQ09ORklHX1NZU19NQUxMT0NfTEVOCS8qIG1hbGxvYyBhcmVhICAgICAgICAgICAgICAgICAgICAgICovCi0Jc3ViCXIwLCByMCwgI0NPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAvKiBiZGluZm8gICAgICAgICAgICAgICAgICAgICAgICAqLworCXN1YglyMCwgcjAsICNHRU5FUkFURURfR0JMX0RBVEFfU0laRSAvKiBiZGluZm8gICAgICAgICAgICAgICAgICAgICAgICAqLwogI2lmZGVmIENPTkZJR19VU0VfSVJRCiAJc3ViCXIwLCByMCwgIyhDT05GSUdfU1RBQ0tTSVpFX0lSUStDT05GSUdfU1RBQ0tTSVpFX0ZJUSkKICNlbmRpZgpAQCAtNDc1LDcgKzQ3Nyw3IEBACiAjaWYgZGVmaW5lZChDT05GSUdfU1lTX0FSTV9XSVRIT1VUX1JFTE9DKQogCWFkcglyMiwgX3N0YXJ0CiAJc3ViCXIyLCByMiwgIyhDT05GSUdfU1RBQ0tTSVpFK0NPTkZJR19TWVNfTUFMTE9DX0xFTikKLQlzdWIJcjIsIHIyLCAjKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSs4KSAgQCBzZXQgYmFzZSAyIHdvcmRzIGludG8gYWJvcnQgc3RhY2sKKwlzdWIJcjIsIHIyLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKzgpICBAIHNldCBiYXNlIDIgd29yZHMgaW50byBhYm9ydCBzdGFjawogI2Vsc2UKIAlsZHIJcjIsIElSUV9TVEFDS19TVEFSVF9JTgogI2VuZGlmCkBAIC01MTMsNyArNTE1LDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MpCiAJYWRyCXIxMywgX3N0YXJ0CQlAIHNldHVwIG91ciBtb2RlIHN0YWNrCiAJc3ViCXIxMywgcjEzLCAjKENPTkZJR19TVEFDS1NJWkUrQ09ORklHX1NZU19NQUxMT0NfTEVOKQotCXN1YglyMTMsIHIxMywgIyhDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUrOCkgQCByZXNlcnZlZCBhIGNvdXBsZSBzcG90cyBpbiBhYm9ydCBzdGFjaworCXN1YglyMTMsIHIxMywgIyhHRU5FUkFURURfR0JMX0RBVEFfU0laRSs4KSBAIHJlc2VydmVkIGEgY291cGxlIHNwb3RzIGluIGFib3J0IHN0YWNrCiAjZWxzZQogCWxkcglyMTMsIElSUV9TVEFDS19TVEFSVF9JTgkJQCBzZXR1cCBvdXIgbW9kZSBzdGFjawogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jcHUvYXJtOTQ2ZXMvc3RhcnQuUyBiL2FyY2gvYXJtL2NwdS9hcm05NDZlcy9zdGFydC5TCmluZGV4IDA3Nzg4NmYuLjIyYWYyZmEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NwdS9hcm05NDZlcy9zdGFydC5TCisrKyBiL2FyY2gvYXJtL2NwdS9hcm05NDZlcy9zdGFydC5TCkBAIC0zMCw3ICszMCw3IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLQorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8dmVyc2lvbi5oPgogCkBAIC0yMjgsNyArMjI4LDcgQEAKIAlzdHIJcjQsIFtyMl0KIAlhZGQJcjIsIHIyLCAjNAogCWNtcAlyMiwgcjMKLQlibmUJZml4bG9vcAorCWJsbwlmaXhsb29wCiAjZW5kaWYKICNlbmRpZgkvKiAjaWZuZGVmIENPTkZJR19TS0lQX1JFTE9DQVRFX1VCT09UICovCiAKQEAgLTMxNiw3ICszMTYsNyBAQAogc3RhY2tfc2V0dXA6CiAJbGRyCXIwLCBfVEVYVF9CQVNFCQkvKiB1cHBlciAxMjggS2lCOiByZWxvY2F0ZWQgdWJvb3QgICAqLwogCXN1YglyMCwgcjAsICNDT05GSUdfU1lTX01BTExPQ19MRU4JLyogbWFsbG9jIGFyZWEgICAgICAgICAgICAgICAgICAgICAgKi8KLQlzdWIJcjAsIHIwLCAjQ09ORklHX1NZU19HQkxfREFUQV9TSVpFIC8qIGJkaW5mbyAgICAgICAgICAgICAgICAgICAgICAgICovCisJc3ViCXIwLCByMCwgI0dFTkVSQVRFRF9HQkxfREFUQV9TSVpFIC8qIGJkaW5mbyAgICAgICAgICAgICAgICAgICAgICAgICovCiAjaWZkZWYgQ09ORklHX1VTRV9JUlEKIAlzdWIJcjAsIHIwLCAjKENPTkZJR19TVEFDS1NJWkVfSVJRK0NPTkZJR19TVEFDS1NJWkVfRklRKQogI2VuZGlmCkBAIC00MjcsNyArNDI3LDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MpCiAJbGRyCXIyLCBfYXJtYm9vdF9zdGFydAogCXN1YglyMiwgcjIsICMoQ09ORklHX1NUQUNLU0laRStDT05GSUdfU1lTX01BTExPQ19MRU4pCi0Jc3ViCXIyLCByMiwgIyhDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUrOCkgIEAgc2V0IGJhc2UgMiB3b3JkcyBpbnRvIGFib3J0IHN0YWNrCisJc3ViCXIyLCByMiwgIyhHRU5FUkFURURfR0JMX0RBVEFfU0laRSs4KSAgQCBzZXQgYmFzZSAyIHdvcmRzIGludG8gYWJvcnQgc3RhY2sKICNlbHNlCiAJbGRyCXIyLCBJUlFfU1RBQ0tfU1RBUlRfSU4KICNlbmRpZgpAQCAtNDY1LDcgKzQ2NSw3IEBACiAjaWYgZGVmaW5lZChDT05GSUdfU1lTX0FSTV9XSVRIT1VUX1JFTE9DKQogCWxkcglyMTMsIF9hcm1ib290X3N0YXJ0CQlAIHNldHVwIG91ciBtb2RlIHN0YWNrCiAJc3ViCXIxMywgcjEzLCAjKENPTkZJR19TVEFDS1NJWkUrQ09ORklHX1NZU19NQUxMT0NfTEVOKQotCXN1YglyMTMsIHIxMywgIyhDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUrOCkgQCByZXNlcnZlZCBhIGNvdXBsZSBzcG90cyBpbiBhYm9ydCBzdGFjaworCXN1YglyMTMsIHIxMywgIyhHRU5FUkFURURfR0JMX0RBVEFfU0laRSs4KSBAIHJlc2VydmVkIGEgY291cGxlIHNwb3RzIGluIGFib3J0IHN0YWNrCiAjZWxzZQogCWxkcglyMTMsIElSUV9TVEFDS19TVEFSVF9JTgkJQCBzZXR1cCBvdXIgbW9kZSBzdGFjawogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jcHUvYXJtX2ludGNtL3N0YXJ0LlMgYi9hcmNoL2FybS9jcHUvYXJtX2ludGNtL3N0YXJ0LlMKaW5kZXggMDczNTZjYi4uYTQyMGY0NCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY3B1L2FybV9pbnRjbS9zdGFydC5TCisrKyBiL2FyY2gvYXJtL2NwdS9hcm1faW50Y20vc3RhcnQuUwpAQCAtMzAsNyArMzAsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0KKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPHZlcnNpb24uaD4KIApAQCAtMjI2LDcgKzIyNiw3IEBACiAJc3RyCXI0LCBbcjJdCiAJYWRkCXIyLCByMiwgIzQKIAljbXAJcjIsIHIzCi0JYm5lCWZpeGxvb3AKKwlibG8JZml4bG9vcAogI2VuZGlmCiAjZW5kaWYJLyogI2lmbmRlZiBDT05GSUdfU0tJUF9SRUxPQ0FURV9VQk9PVCAqLwogCkBAIC0zMTIsNyArMzEyLDcgQEAKIHN0YWNrX3NldHVwOgogCWxkcglyMCwgX1RFWFRfQkFTRQkJLyogdXBwZXIgMTI4IEtpQjogcmVsb2NhdGVkIHVib290ICAgKi8KIAlzdWIJcjAsIHIwLCAjQ09ORklHX1NZU19NQUxMT0NfTEVOCS8qIG1hbGxvYyBhcmVhICAgICAgICAgICAgICAgICAgICAgICovCi0Jc3ViCXIwLCByMCwgI0NPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAvKiBiZGluZm8gICAgICAgICAgICAgICAgICAgICAgICAqLworCXN1YglyMCwgcjAsICNHRU5FUkFURURfR0JMX0RBVEFfU0laRSAvKiBiZGluZm8gICAgICAgICAgICAgICAgICAgICAgICAqLwogI2lmZGVmIENPTkZJR19VU0VfSVJRCiAJc3ViCXIwLCByMCwgIyhDT05GSUdfU1RBQ0tTSVpFX0lSUStDT05GSUdfU1RBQ0tTSVpFX0ZJUSkKICNlbmRpZgpAQCAtNDAzLDcgKzQwMyw3IEBACiAjaWYgZGVmaW5lZChDT05GSUdfU1lTX0FSTV9XSVRIT1VUX1JFTE9DKQogCWxkcglyMiwgX2FybWJvb3Rfc3RhcnQKIAlzdWIJcjIsIHIyLCAjKENPTkZJR19TVEFDS1NJWkUrQ09ORklHX1NZU19NQUxMT0NfTEVOKQotCXN1YglyMiwgcjIsICMoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKzgpICBAIHNldCBiYXNlIDIgd29yZHMgaW50byBhYm9ydCBzdGFjaworCXN1YglyMiwgcjIsICMoR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUrOCkgIEAgc2V0IGJhc2UgMiB3b3JkcyBpbnRvIGFib3J0IHN0YWNrCiAjZWxzZQogCWxkcglyMiwgSVJRX1NUQUNLX1NUQVJUX0lOCiAjZW5kaWYKQEAgLTQ0MSw3ICs0NDEsNyBAQAogI2lmIGRlZmluZWQoQ09ORklHX1NZU19BUk1fV0lUSE9VVF9SRUxPQykKIAlsZHIJcjEzLCBfYXJtYm9vdF9zdGFydAkJQCBzZXR1cCBvdXIgbW9kZSBzdGFjawogCXN1YglyMTMsIHIxMywgIyhDT05GSUdfU1RBQ0tTSVpFK0NPTkZJR19TWVNfTUFMTE9DX0xFTikKLQlzdWIJcjEzLCByMTMsICMoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKzgpIEAgcmVzZXJ2ZWQgYSBjb3VwbGUgc3BvdHMgaW4gYWJvcnQgc3RhY2sKKwlzdWIJcjEzLCByMTMsICMoR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUrOCkgQCByZXNlcnZlZCBhIGNvdXBsZSBzcG90cyBpbiBhYm9ydCBzdGFjawogI2Vsc2UKIAlsZHIJcjEzLCBJUlFfU1RBQ0tfU1RBUlRfSU4JCUAgc2V0dXAgb3VyIG1vZGUgc3RhY2sKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY3B1L2FybXY3L3N0YXJ0LlMgYi9hcmNoL2FybS9jcHUvYXJtdjcvc3RhcnQuUwppbmRleCA2NGM4NmU5Li5iZGYyZmFkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9jcHUvYXJtdjcvc3RhcnQuUworKysgYi9hcmNoL2FybS9jcHUvYXJtdjcvc3RhcnQuUwpAQCAtMjksNiArMjksNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDx2ZXJzaW9uLmg+CiAKQEAgLTIyNCwxMyArMjI1LDEzIEBACiAJbGRyCXIzLCBfcmVsX2R5bl9lbmRfb2ZzCS8qIHIzIDwtIHJlbCBkeW4gZW5kIG9mcyAqLwogCWFkZAlyMywgcjMsIHIwCQkvKiByMyA8LSByZWwgZHluIGVuZCBpbiBGTEFTSCAqLwogZml4bG9vcDoKLQlsZHIJcjAsIFtyMl0JLyogcjAgPC0gbG9jYXRpb24gdG8gZml4IHVwLCBJTiBGTEFTSCEgKi8KLQlhZGQJcjAsIHI5CQkvKiByMCA8LSBsb2NhdGlvbiB0byBmaXggdXAgaW4gUkFNICovCisJbGRyCXIwLCBbcjJdCQkvKiByMCA8LSBsb2NhdGlvbiB0byBmaXggdXAsIElOIEZMQVNIISAqLworCWFkZAlyMCwgcjAsIHI5CQkvKiByMCA8LSBsb2NhdGlvbiB0byBmaXggdXAgaW4gUkFNICovCiAJbGRyCXIxLCBbcjIsICM0XQogCWFuZAlyOCwgcjEsICMweGZmCi0JY21wCXI4LCAjMjMJCS8qIHJlbGF0aXZlIGZpeHVwPyAqLworCWNtcAlyOCwgIzIzCQkJLyogcmVsYXRpdmUgZml4dXA/ICovCiAJYmVxCWZpeHJlbAotCWNtcAlyOCwgIzIJCS8qIGFic29sdXRlIGZpeHVwPyAqLworCWNtcAlyOCwgIzIJCQkvKiBhYnNvbHV0ZSBmaXh1cD8gKi8KIAliZXEJZml4YWJzCiAJLyogaWdub3JlIHVua25vd24gdHlwZSBvZiBmaXh1cCAqLwogCWIJZml4bmV4dApAQCAtMjQ3LDcgKzI0OCw3IEBACiAJYWRkCXIxLCByMSwgcjkKIGZpeG5leHQ6CiAJc3RyCXIxLCBbcjBdCi0JYWRkCXIyLCByMiwgIzgJLyogZWFjaCByZWwuZHluIGVudHJ5IGlzIDggYnl0ZXMgKi8KKwlhZGQJcjIsIHIyLCAjOAkJLyogZWFjaCByZWwuZHluIGVudHJ5IGlzIDggYnl0ZXMgKi8KIAljbXAJcjIsIHIzCiAJYmxvCWZpeGxvb3AKIApAQCAtMjc0LDggKzI3NSwxMCBAQAoganVtcF8yX3JhbToKIAlsZHIJcjAsIF9ib2FyZF9pbml0X3Jfb2ZzCiAJYWRyCXIxLCBfc3RhcnQKLQlhZGQJcjAsIHIwLCByMQotCWFkZAlsciwgcjAsIHI5CisJYWRkCWxyLCByMCwgcjEKKyNpZm5kZWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QKKwlhZGQJbHIsIGxyLCByOQorI2VuZGlmCiAJLyogc2V0dXAgcGFyYW1ldGVycyBmb3IgYm9hcmRfaW5pdF9yICovCiAJbW92CXIwLCByNQkJLyogZ2RfdCAqLwogCW1vdglyMSwgcjcJCS8qIGRlc3RfYWRkciAqLwpAQCAtMzU3LDcgKzM2MCw3IEBACiBzdGFja19zZXR1cDoKIAlsZHIJcjAsIF9URVhUX0JBU0UJCUAgdXBwZXIgMTI4IEtpQjogcmVsb2NhdGVkIHVib290CiAJc3ViCXIwLCByMCwgI0NPTkZJR19TWVNfTUFMTE9DX0xFTiBAIG1hbGxvYyBhcmVhCi0Jc3ViCXIwLCByMCwgI0NPTkZJR19TWVNfR0JMX0RBVEFfU0laRSBAIGJkaW5mbworCXN1YglyMCwgcjAsICNHRU5FUkFURURfR0JMX0RBVEFfU0laRSBAIGJkaW5mbwogI2lmZGVmIENPTkZJR19VU0VfSVJRCiAJc3ViCXIwLCByMCwgIyhDT05GSUdfU1RBQ0tTSVpFX0lSUSArIENPTkZJR19TVEFDS1NJWkVfRklRKQogI2VuZGlmCkBAIC00NjQsNyArNDY3LDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MpCiAJbGRyCXIyLCBfYXJtYm9vdF9zdGFydAogCXN1YglyMiwgcjIsICMoQ09ORklHX1NZU19NQUxMT0NfTEVOKQotCXN1YglyMiwgcjIsICMoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICsgOCkJQCBzZXQgYmFzZSAyIHdvcmRzIGludG8gYWJvcnQKKwlzdWIJcjIsIHIyLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFICsgOCkJQCBzZXQgYmFzZSAyIHdvcmRzIGludG8gYWJvcnQKICNlbHNlCiAJbGRyCXIyLCBJUlFfU1RBQ0tfU1RBUlRfSU4JCUAgc2V0IGJhc2UgMiB3b3JkcyBpbnRvIGFib3J0CiAJCQkJCQlAIHN0YWNrCkBAIC01MDcsNyArNTEwLDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MpCiAJbGRyCXIxMywgX2FybWJvb3Rfc3RhcnQJCUAgc2V0dXAgb3VyIG1vZGUgc3RhY2sgKGVudGVyCiAJc3ViCXIxMywgcjEzLCAjKENPTkZJR19TWVNfTUFMTE9DX0xFTikJQCBtb3ZlIHBhc3QgbWFsbG9jIHBvb2wKLQlzdWIJcjEzLCByMTMsICMoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICsgOCkgQCBtb3ZlIHRvIHJlc2VydmVkIGEgY291cGxlCisJc3ViCXIxMywgcjEzLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFICsgOCkgQCBtb3ZlIHRvIHJlc2VydmVkIGEgY291cGxlCiAjZWxzZQogCWxkcglyMTMsIElSUV9TVEFDS19TVEFSVF9JTgkJQCBzZXR1cCBvdXIgbW9kZSBzdGFjayAoZW50ZXIKIAkJCQkJCUAgaW4gYmFua2VkIG1vZGUpCkBAIC01MzUsNyArNTM4LDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MpCiAJbGRyCXIwLCBfYXJtYm9vdF9zdGFydAkJQCBnZXQgZGF0YSByZWdpb25zIHN0YXJ0CiAJc3ViCXIwLCByMCwgIyhDT05GSUdfU1lTX01BTExPQ19MRU4pCUAgbW92ZSBwYXN0IG1hbGxvYyBwb29sCi0Jc3ViCXIwLCByMCwgIyhDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgKyA4KQlAIG1vdmUgcGFzdCBnYmwgYW5kIGEgY291cGxlCisJc3ViCXIwLCByMCwgIyhHRU5FUkFURURfR0JMX0RBVEFfU0laRSArIDgpCUAgbW92ZSBwYXN0IGdibCBhbmQgYSBjb3VwbGUKICNlbHNlCiAJbGRyCXIwLCBJUlFfU1RBQ0tfU1RBUlRfSU4JCUAgZ2V0IGRhdGEgcmVnaW9ucyBzdGFydAogCQkJCQkJQCBzcG90cyBmb3IgYWJvcnQgc3RhY2sKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NwdS9peHAvc3RhcnQuUyBiL2FyY2gvYXJtL2NwdS9peHAvc3RhcnQuUwppbmRleCA4MzZjMzNiLi5hMjU2MGQ0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9jcHUvaXhwL3N0YXJ0LlMKKysrIGIvYXJjaC9hcm0vY3B1L2l4cC9zdGFydC5TCkBAIC0yNyw2ICsyNyw3IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPHZlcnNpb24uaD4KICNpbmNsdWRlIDxhc20vYXJjaC9peHA0MjUuaD4KQEAgLTM1MSw3ICszNTIsNyBAQAogCXN0cglyNCwgW3IyXQogCWFkZAlyMiwgcjIsICM0CiAJY21wCXIyLCByMwotCWJuZQlmaXhsb29wCisJYmxvCWZpeGxvb3AKICNlbmRpZgogI2VuZGlmCS8qICNpZm5kZWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QgKi8KIApAQCAtNTU1LDcgKzU1Niw3IEBACiBzdGFja19zZXR1cDoKIAlsZHIJcjAsIF9URVhUX0JBU0UJCS8qIHVwcGVyIDEyOCBLaUI6IHJlbG9jYXRlZCB1Ym9vdCAgICovCiAJc3ViCXIwLCByMCwgI0NPTkZJR19TWVNfTUFMTE9DX0xFTgkvKiBtYWxsb2MgYXJlYSAgICAgICAgICAgICAgICAgICAgICAqLwotCXN1YglyMCwgcjAsICNDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwlzdWIJcjAsIHIwLCAjR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvICAgICAgICAgICAgICAgICAgICAgICAgKi8KICNpZmRlZiBDT05GSUdfVVNFX0lSUQogCXN1YglyMCwgcjAsICMoQ09ORklHX1NUQUNLU0laRV9JUlErQ09ORklHX1NUQUNLU0laRV9GSVEpCiAjZW5kaWYKQEAgLTYyMCw3ICs2MjEsNyBAQAogI2lmIGRlZmluZWQoQ09ORklHX1NZU19BUk1fV0lUSE9VVF9SRUxPQykKIAlsZHIJcjIsIF9hcm1ib290X3N0YXJ0CiAJc3ViCXIyLCByMiwgIyhDT05GSUdfU1RBQ0tTSVpFK0NPTkZJR19TWVNfTUFMTE9DX0xFTikKLQlzdWIJcjIsIHIyLCAjKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSs4KSAgQCBzZXQgYmFzZSAyIHdvcmRzIGludG8gYWJvcnQgc3RhY2sKKwlzdWIJcjIsIHIyLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKzgpICBAIHNldCBiYXNlIDIgd29yZHMgaW50byBhYm9ydCBzdGFjawogI2Vsc2UKIAlsZHIJcjIsIElSUV9TVEFDS19TVEFSVF9JTgogI2VuZGlmCkBAIC02NjEsNyArNjYyLDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MpCiAJbGRyCXIxMywgX2FybWJvb3Rfc3RhcnQJCUAgc2V0dXAgb3VyIG1vZGUgc3RhY2sKIAlzdWIJcjEzLCByMTMsICMoQ09ORklHX1NUQUNLU0laRStDT05GSUdfU1lTX01BTExPQ19MRU4pCi0Jc3ViCXIxMywgcjEzLCAjKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSs4KSBAIHJlc2VydmVkIGEgY291cGxlIHNwb3RzIGluIGFib3J0IHN0YWNrCisJc3ViCXIxMywgcjEzLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKzgpIEAgcmVzZXJ2ZWQgYSBjb3VwbGUgc3BvdHMgaW4gYWJvcnQgc3RhY2sKICNlbHNlCiAJbGRyCXIxMywgSVJRX1NUQUNLX1NUQVJUX0lOCQlAIHNldHVwIG91ciBtb2RlIHN0YWNrCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NwdS9saDdhNDB4L3N0YXJ0LlMgYi9hcmNoL2FybS9jcHUvbGg3YTQweC9zdGFydC5TCmluZGV4IGQ5NDQ4NjAuLjIzOWFkNDcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NwdS9saDdhNDB4L3N0YXJ0LlMKKysrIGIvYXJjaC9hcm0vY3B1L2xoN2E0MHgvc3RhcnQuUwpAQCAtMjQsMTEgKzI0LDEwIEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLQorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8dmVyc2lvbi5oPgogCi0KIC8qCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTI0MCw3ICsyMzksNyBAQAogCXN0cglyNCwgW3IyXQogCWFkZAlyMiwgcjIsICM0CiAJY21wCXIyLCByMwotCWJuZQlmaXhsb29wCisJYmxvCWZpeGxvb3AKICNlbmRpZgogI2VuZGlmCS8qICNpZm5kZWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QgKi8KIApAQCAtMzQ5LDcgKzM0OCw3IEBACiBzdGFja19zZXR1cDoKIAlsZHIJcjAsIF9URVhUX0JBU0UJCS8qIHVwcGVyIDEyOCBLaUI6IHJlbG9jYXRlZCB1Ym9vdCAgICovCiAJc3ViCXIwLCByMCwgI0NPTkZJR19TWVNfTUFMTE9DX0xFTgkvKiBtYWxsb2MgYXJlYSAgICAgICAgICAgICAgICAgICAgICAqLwotCXN1YglyMCwgcjAsICNDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwlzdWIJcjAsIHIwLCAjR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvICAgICAgICAgICAgICAgICAgICAgICAgKi8KICNpZmRlZiBDT05GSUdfVVNFX0lSUQogCXN1YglyMCwgcjAsICMoQ09ORklHX1NUQUNLU0laRV9JUlErQ09ORklHX1NUQUNLU0laRV9GSVEpCiAjZW5kaWYKQEAgLTQ2NCw3ICs0NjMsNyBAQAogI2lmIGRlZmluZWQoQ09ORklHX1NZU19BUk1fV0lUSE9VVF9SRUxPQykKIAlsZHIJcjIsIF9hcm1ib290X3N0YXJ0CiAJc3ViCXIyLCByMiwgIyhDT05GSUdfU1RBQ0tTSVpFK0NPTkZJR19TWVNfTUFMTE9DX0xFTikKLQlzdWIJcjIsIHIyLCAjKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSs4KSAgQCBzZXQgYmFzZSAyIHdvcmRzIGludG8gYWJvcnQgc3RhY2sKKwlzdWIJcjIsIHIyLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKzgpICBAIHNldCBiYXNlIDIgd29yZHMgaW50byBhYm9ydCBzdGFjawogI2Vsc2UKIAlsZHIJcjIsIElSUV9TVEFDS19TVEFSVF9JTgogI2VuZGlmCkBAIC01MDEsNyArNTAwLDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MpCiAJbGRyCXIxMywgX2FybWJvb3Rfc3RhcnQJCUAgc2V0dXAgb3VyIG1vZGUgc3RhY2sKIAlzdWIJcjEzLCByMTMsICMoQ09ORklHX1NUQUNLU0laRStDT05GSUdfU1lTX01BTExPQ19MRU4pCi0Jc3ViCXIxMywgcjEzLCAjKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSs4KSBAIHJlc2VydmVkIGEgY291cGxlIHNwb3RzIGluIGFib3J0IHN0YWNrCisJc3ViCXIxMywgcjEzLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKzgpIEAgcmVzZXJ2ZWQgYSBjb3VwbGUgc3BvdHMgaW4gYWJvcnQgc3RhY2sKICNlbHNlCiAJbGRyCXIxMywgSVJRX1NUQUNLX1NUQVJUX0lOCQlAIHNldHVwIG91ciBtb2RlIHN0YWNrCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NwdS9weGEvc3RhcnQuUyBiL2FyY2gvYXJtL2NwdS9weGEvc3RhcnQuUwppbmRleCA2ODRlNDRlLi5iZjg1MTBlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9jcHUvcHhhL3N0YXJ0LlMKKysrIGIvYXJjaC9hcm0vY3B1L3B4YS9zdGFydC5TCkBAIC04LDYgKzgsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwMglLeWxlIEhhcnJpcyA8a2hhcnJpc0BuZXh1cy10ZWNoLm5ldD4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDMJUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgogICogIENvcHlyaWdodCAoQykgMjAwMwlLYWktVXdlIEJsb2VtIDxrYWktdXdlLmJsb2VtQGF1ZXJzd2FsZC5kZT4KKyAqICBDb3B5cmlnaHQgKGMpIDIwMTAJTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTI4LDYgKzI5LDcgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8dmVyc2lvbi5oPgogI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+CkBAIC05NCwyMCArOTYsMTYgQEAKIF9URVhUX0JBU0U6CiAJLndvcmQJQ09ORklHX1NZU19URVhUX0JBU0UKIAotLmdsb2JsIF9hcm1ib290X3N0YXJ0Ci1fYXJtYm9vdF9zdGFydDoKLQkud29yZCBfc3RhcnQKLQogLyoKICAqIFRoZXNlIGFyZSBkZWZpbmVkIGluIHRoZSBib2FyZC1zcGVjaWZpYyBsaW5rZXIgc2NyaXB0LgogICovCi0uZ2xvYmwgX2Jzc19zdGFydAotX2Jzc19zdGFydDoKLQkud29yZCBfX2Jzc19zdGFydAorLmdsb2JsIF9ic3Nfc3RhcnRfb2ZzCitfYnNzX3N0YXJ0X29mczoKKwkud29yZCBfX2Jzc19zdGFydCAtIF9zdGFydAogCi0uZ2xvYmwgX2Jzc19lbmQKLV9ic3NfZW5kOgotCS53b3JkIF9lbmQKKy5nbG9ibCBfYnNzX2VuZF9vZnMKK19ic3NfZW5kX29mczoKKwkud29yZCBfZW5kIC0gX3N0YXJ0CiAKICNpZmRlZiBDT05GSUdfVVNFX0lSUQogLyogSVJRIHN0YWNrIG1lbW9yeSAoY2FsY3VsYXRlZCBhdCBydW4tdGltZSkgKi8KQEAgLTEyNywzMCArMTI1LDYgQEAKIElSUV9TVEFDS19TVEFSVF9JTjoKIAkud29yZAkweDBiYWRjMGRlCiAKLS5nbG9ibCBfZGF0YXJlbF9zdGFydAotX2RhdGFyZWxfc3RhcnQ6Ci0JLndvcmQgX19kYXRhcmVsX3N0YXJ0Ci0KLS5nbG9ibCBfZGF0YXJlbHJvbG9jYWxfc3RhcnQKLV9kYXRhcmVscm9sb2NhbF9zdGFydDoKLQkud29yZCBfX2RhdGFyZWxyb2xvY2FsX3N0YXJ0Ci0KLS5nbG9ibCBfZGF0YXJlbGxvY2FsX3N0YXJ0Ci1fZGF0YXJlbGxvY2FsX3N0YXJ0OgotCS53b3JkIF9fZGF0YXJlbGxvY2FsX3N0YXJ0Ci0KLS5nbG9ibCBfZGF0YXJlbHJvX3N0YXJ0Ci1fZGF0YXJlbHJvX3N0YXJ0OgotCS53b3JkIF9fZGF0YXJlbHJvX3N0YXJ0Ci0KLS5nbG9ibCBfZ290X3N0YXJ0Ci1fZ290X3N0YXJ0OgotCS53b3JkIF9fZ290X3N0YXJ0Ci0KLS5nbG9ibCBfZ290X2VuZAotX2dvdF9lbmQ6Ci0JLndvcmQgX19nb3RfZW5kCi0KIC8qCiAgKiB0aGUgYWN0dWFsIHJlc2V0IGNvZGUKICAqLwpAQCAtMjcyLDkgKzI0Niw4IEBACiAKIAlhZHIJcjAsIF9zdGFydAogCWxkcglyMiwgX1RFWFRfQkFTRQotCWxkcglyMywgX2Jzc19zdGFydAotCXN1YglyMiwgcjMsIHIyCQkvKiByMiA8LSBzaXplIG9mIGFybWJvb3QJICAgICovCi0JYWRkCXIyLCByMCwgcjIJCS8qIHIyIDwtIHNvdXJjZSBlbmQgYWRkcmVzcwkgICAgKi8KKwlsZHIJcjMsIF9ic3Nfc3RhcnRfb2ZzCisJYWRkCXIyLCByMCwgcjMJCS8qIHIyIDwtIHNvdXJjZSBlbmQgYWRkcmVzcwkgICAgKi8KIAljbXAJcjAsIHI2CiAJYmVxCWNsZWFyX2JzcwogCkBAIC0yODgsMzYgKzI2MSw1NCBAQAogCWxkbWZkIHNwISwge3IwLXIxMn0KIAogI2lmbmRlZiBDT05GSUdfUFJFTE9BREVSCi0JLyogZml4IGdvdCBlbnRyaWVzICovCi0JbGRyCXIxLCBfVEVYVF9CQVNFCQkvKiBUZXh0IGJhc2UgKi8KLQltb3YJcjAsIHI3CQkJLyogcmVsb2MgYWRkciAqLwotCWxkcglyMiwgX2dvdF9zdGFydAkJLyogYWRkciBpbiBGbGFzaCAqLwotCWxkcglyMywgX2dvdF9lbmQJCS8qIGFkZHIgaW4gRmxhc2ggKi8KLQlzdWIJcjMsIHIzLCByMQotCWFkZAlyMywgcjMsIHIwCi0Jc3ViCXIyLCByMiwgcjEKLQlhZGQJcjIsIHIyLCByMAotCisJLyoKKwkgKiBmaXggLnJlbC5keW4gcmVsb2NhdGlvbnMKKwkgKi8KKwlsZHIJcjAsIF9URVhUX0JBU0UJCS8qIHIwIDwtIFRleHQgYmFzZSAqLworCXN1YglyOSwgcjcsIHIwCQkvKiByOSA8LSByZWxvY2F0aW9uIG9mZnNldCAqLworCWxkcglyMTAsIF9keW5zeW1fc3RhcnRfb2ZzCS8qIHIxMCA8LSBzeW0gdGFibGUgb2ZzICovCisJYWRkCXIxMCwgcjEwLCByMAkJLyogcjEwIDwtIHN5bSB0YWJsZSBpbiBGTEFTSCAqLworCWxkcglyMiwgX3JlbF9keW5fc3RhcnRfb2ZzCS8qIHIyIDwtIHJlbCBkeW4gc3RhcnQgb2ZzICovCisJYWRkCXIyLCByMiwgcjAJCS8qIHIyIDwtIHJlbCBkeW4gc3RhcnQgaW4gRkxBU0ggKi8KKwlsZHIJcjMsIF9yZWxfZHluX2VuZF9vZnMJLyogcjMgPC0gcmVsIGR5biBlbmQgb2ZzICovCisJYWRkCXIzLCByMywgcjAJCS8qIHIzIDwtIHJlbCBkeW4gZW5kIGluIEZMQVNIICovCiBmaXhsb29wOgotCWxkcglyNCwgW3IyXQotCXN1YglyNCwgcjQsIHIxCi0JYWRkCXI0LCByNCwgcjAKLQlzdHIJcjQsIFtyMl0KLQlhZGQJcjIsIHIyLCAjNAorCWxkcglyMCwgW3IyXQkvKiByMCA8LSBsb2NhdGlvbiB0byBmaXggdXAsIElOIEZMQVNIISAqLworCWFkZAlyMCwgcjkJCS8qIHIwIDwtIGxvY2F0aW9uIHRvIGZpeCB1cCBpbiBSQU0gKi8KKwlsZHIJcjEsIFtyMiwgIzRdCisJYW5kCXI4LCByMSwgIzB4ZmYKKwljbXAJcjgsICMyMwkJLyogcmVsYXRpdmUgZml4dXA/ICovCisJYmVxCWZpeHJlbAorCWNtcAlyOCwgIzIJCS8qIGFic29sdXRlIGZpeHVwPyAqLworCWJlcQlmaXhhYnMKKwkvKiBpZ25vcmUgdW5rbm93biB0eXBlIG9mIGZpeHVwICovCisJYglmaXhuZXh0CitmaXhhYnM6CisJLyogYWJzb2x1dGUgZml4OiBzZXQgbG9jYXRpb24gdG8gKG9mZnNldCkgc3ltYm9sIHZhbHVlICovCisJbW92CXIxLCByMSwgTFNSICM0CQkvKiByMSA8LSBzeW1ib2wgaW5kZXggaW4gLmR5bnN5bSAqLworCWFkZAlyMSwgcjEwLCByMQkJLyogcjEgPC0gYWRkcmVzcyBvZiBzeW1ib2wgaW4gdGFibGUgKi8KKwlsZHIJcjEsIFtyMSwgIzRdCQkvKiByMSA8LSBzeW1ib2wgdmFsdWUgKi8KKwlhZGQJcjEsIHI5CQkJLyogcjEgPC0gcmVsb2NhdGVkIHN5bSBhZGRyICovCisJYglmaXhuZXh0CitmaXhyZWw6CisJLyogcmVsYXRpdmUgZml4OiBpbmNyZWFzZSBsb2NhdGlvbiBieSBvZmZzZXQgKi8KKwlsZHIJcjEsIFtyMF0KKwlhZGQJcjEsIHIxLCByOQorZml4bmV4dDoKKwlzdHIJcjEsIFtyMF0KKwlhZGQJcjIsIHIyLCAjOAkvKiBlYWNoIHJlbC5keW4gZW50cnkgaXMgOCBieXRlcyAqLwogCWNtcAlyMiwgcjMKLQlibmUJZml4bG9vcAorCWJsbwlmaXhsb29wCiAjZW5kaWYKICNlbmRpZgkvKiAjaWZuZGVmIENPTkZJR19TS0lQX1JFTE9DQVRFX1VCT09UICovCiAKIGNsZWFyX2JzczoKICNpZm5kZWYgQ09ORklHX1BSRUxPQURFUgotCWxkcglyMCwgX2Jzc19zdGFydAotCWxkcglyMSwgX2Jzc19lbmQKKwlsZHIJcjAsIF9ic3Nfc3RhcnRfb2ZzCisJbGRyCXIxLCBfYnNzX2VuZF9vZnMKIAlsZHIJcjMsIF9URVhUX0JBU0UJCS8qIFRleHQgYmFzZSAqLwogCW1vdglyNCwgcjcJCQkvKiByZWxvYyBhZGRyICovCi0Jc3ViCXIwLCByMCwgcjMKIAlhZGQJcjAsIHIwLCByNAotCXN1YglyMSwgcjEsIHIzCiAJYWRkCXIxLCByMSwgcjQKIAltb3YJcjIsICMweDAwMDAwMDAwCQkvKiBjbGVhcgkJCSAgICAqLwogCkBAIC0zMzIsMjQgKzMyMywzNSBAQAogICogaW5pdGlhbGl6YXRpb24sIG5vdyBydW5uaW5nIGZyb20gUkFNLgogICovCiAjaWZkZWYgQ09ORklHX09ORU5BTkRfSVBMCi0JbGRyICAgICBwYywgX3N0YXJ0X29uZWJvb3QKKwlsZHIgICAgIHIwLCBfc3RhcnRfb25lYm9vdF9vZnMKKwltb3YJcGMsIHIwCiAKLV9zdGFydF9vbmVib290OiAud29yZCBzdGFydF9vbmVib290Citfc3RhcnRfb25lYm9vdF9vZnMKKwk6IC53b3JkIHN0YXJ0X29uZWJvb3QKICNlbHNlCi0JbGRyCXIwLCBfVEVYVF9CQVNFCi0JbGRyCXIyLCBfYm9hcmRfaW5pdF9yCi0Jc3ViCXIyLCByMiwgcjAKLQlhZGQJcjIsIHIyLCByNwkvKiBwb3NpdGlvbiBmcm9tIGJvYXJkX2luaXRfciBpbiBSQU0gKi8KKwlsZHIJcjAsIF9ib2FyZF9pbml0X3Jfb2ZzCisJYWRyCXIxLCBfc3RhcnQKKwlhZGQJbHIsIHIwLCByMQorI2lmbmRlZiBDT05GSUdfU0tJUF9SRUxPQ0FURV9VQk9PVAorCWFkZAlsciwgbHIsIHI5CisjZW5kaWYKIAkvKiBzZXR1cCBwYXJhbWV0ZXJzIGZvciBib2FyZF9pbml0X3IgKi8KIAltb3YJcjAsIHI1CQkvKiBnZF90ICovCiAJbW92CXIxLCByNwkJLyogZGVzdF9hZGRyICovCiAJLyoganVtcCB0byBpdCAuLi4gKi8KLQltb3YJbHIsIHIyCiAJbW92CXBjLCBscgogCi1fYm9hcmRfaW5pdF9yOiAud29yZCBib2FyZF9pbml0X3IKK19ib2FyZF9pbml0X3Jfb2ZzOgorCS53b3JkIGJvYXJkX2luaXRfciAtIF9zdGFydAogI2VuZGlmCiAKK19yZWxfZHluX3N0YXJ0X29mczoKKwkud29yZCBfX3JlbF9keW5fc3RhcnQgLSBfc3RhcnQKK19yZWxfZHluX2VuZF9vZnM6CisJLndvcmQgX19yZWxfZHluX2VuZCAtIF9zdGFydAorX2R5bnN5bV9zdGFydF9vZnM6CisJLndvcmQgX19keW5zeW1fc3RhcnQgLSBfc3RhcnQKKwogI2Vsc2UgLyogI2lmICFkZWZpbmVkKENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MpICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtNDIwLDcgKzQyMiw3IEBACiAjaWYgZGVmaW5lZChDT05GSUdfU1lTX0FSTV9XSVRIT1VUX1JFTE9DKQogCWxkcglyMiwgX2FybWJvb3Rfc3RhcnQKIAlzdWIJcjIsIHIyLCAjKENPTkZJR19TVEFDS1NJWkUrQ09ORklHX1NZU19NQUxMT0NfTEVOKQotCXN1YglyMiwgcjIsICMoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKzgpCUAgc2V0IGJhc2UgMiB3b3JkcyBpbnRvIGFib3J0IHN0YWNrCisJc3ViCXIyLCByMiwgIyhHRU5FUkFURURfR0JMX0RBVEFfU0laRSs4KQlAIHNldCBiYXNlIDIgd29yZHMgaW50byBhYm9ydCBzdGFjawogI2Vsc2UKIAlsZHIJcjIsIElSUV9TVEFDS19TVEFSVF9JTgogI2VuZGlmCkBAIC00NjEsNyArNDYzLDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MpCiAJbGRyCXIxMywgX2FybWJvb3Rfc3RhcnQJCUAgc2V0dXAgb3VyIG1vZGUgc3RhY2sKIAlzdWIJcjEzLCByMTMsICMoQ09ORklHX1NUQUNLU0laRStDT05GSUdfU1lTX01BTExPQ19MRU4pCi0Jc3ViCXIxMywgcjEzLCAjKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSs4KSBAIHJlc2VydmVkIGEgY291cGxlIHNwb3RzIGluIGFib3J0IHN0YWNrCisJc3ViCXIxMywgcjEzLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKzgpIEAgcmVzZXJ2ZWQgYSBjb3VwbGUgc3BvdHMgaW4gYWJvcnQgc3RhY2sKICNlbHNlCiAJbGRyCXIxMywgSVJRX1NUQUNLX1NUQVJUX0lOCQlAIHNldHVwIG91ciBtb2RlIHN0YWNrCiAjZW5kaWYKQEAgLTU2NywxMyArNTY5LDcgQEAKIC8qCQkJCQkJCQkJICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIE9wZXJhdGluZyBTeXN0ZW0gVGltZXIgKi8KLU9TVElNRVJfQkFTRToJLndvcmQJMHg0MGEwMDAwMAotI2RlZmluZSBPU01SMwkweDBDCi0jZGVmaW5lIE9TQ1IJMHgxMAotI2RlZmluZSBPV0VSCTB4MTgKLSNkZWZpbmUgT0lFUgkweDFDCi0KLQkuYWxpZ24JNQorLmFsaWduCTUKIC5nbG9ibCByZXNldF9jcHUKIAogCS8qIEZJWE1FOiB0aGlzIGNvZGUgaXMgUFhBMjUwIHNwZWNpZmljLiBIb3cgaXMgdGhpcyBoYW5kbGVkIG9uCSAgICAqLwpAQCAtNTgzLDE4ICs1NzksMjAgQEAKIAogCS8qIFdlIHNldCBPV0U6V01FICh3YXRjaGRvZyBlbmFibGUpIGFuZCB3YWl0IHVudGlsIHRpbWVvdXQgaGFwcGVucyAgKi8KIAotCWxkcglyMCwgT1NUSU1FUl9CQVNFCi0JbGRyCXIxLCBbcjAsICNPV0VSXQorCWxkcglyMCwgPU9XRVIKKwlsZHIJcjEsIFtyMF0KIAlvcnIJcjEsIHIxLCAjMHgwMDAxCQkJLyogYml0MDogV01FCQkgICAgKi8KLQlzdHIJcjEsIFtyMCwgI09XRVJdCisJc3RyCXIxLCBbcjBdCiAKIAkvKiBPUyB0aW1lciBkb2VzIG9ubHkgd3JhcCBldmVyeSAxMTY1IHNlY29uZHMsIHNvIHdlIGhhdmUgdG8gc2V0ICAgICovCiAJLyogdGhlIG1hdGNoIHJlZ2lzdGVyIGFzIHdlbGwuCQkJCQkgICAgKi8KIAotCWxkcglyMSwgW3IwLCAjT1NDUl0JCQkvKiByZWFkIE9TIHRpbWVyCSAgICAqLworCWxkcglyMCwgPU9TQ1IKKwlsZHIJcjEsIFtyMF0JCQkvKiByZWFkIE9TIHRpbWVyCSAgICAqLwogCWFkZAlyMSwgcjEsICMweDgwMAkJCS8qIGxldCBPU01SMyBtYXRjaCBhZnRlciAgICAqLwogCWFkZAlyMSwgcjEsICMweDgwMAkJCS8qIDQwOTYqKDEvMy42ODY0TUh6KT0xbXMgICAqLwotCXN0cglyMSwgW3IwLCAjT1NNUjNdCisJbGRyCXIwLCA9T1NNUjMKKwlzdHIJcjEsIFtyMF0KIAogcmVzZXRfZW5kbGVzczoKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY3B1L3B4YS91LWJvb3QubGRzIGIvYXJjaC9hcm0vY3B1L3B4YS91LWJvb3QubGRzCmluZGV4IDc0YTRjNmUuLmQ2NjQzZjkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NwdS9weGEvdS1ib290LmxkcworKysgYi9hcmNoL2FybS9jcHUvcHhhL3UtYm9vdC5sZHMKQEAgLTQxLDIxICs0MSwxOCBAQAogCS4gPSBBTElHTig0KTsKIAkuZGF0YSA6IHsKIAkJKiguZGF0YSkKLQlfX2RhdGFyZWxfc3RhcnQgPSAuOwotCQkqKC5kYXRhLnJlbCkKLQlfX2RhdGFyZWxyb2xvY2FsX3N0YXJ0ID0gLjsKLQkJKiguZGF0YS5yZWwucm8ubG9jYWwpCi0JX19kYXRhcmVsbG9jYWxfc3RhcnQgPSAuOwotCQkqKC5kYXRhLnJlbC5sb2NhbCkKLQlfX2RhdGFyZWxyb19zdGFydCA9IC47Ci0JCSooLmRhdGEucmVsLnJvKQogCX0KIAotCV9fZ290X3N0YXJ0ID0gLjsKIAkuID0gQUxJR04oNCk7Ci0JLmdvdCA6IHsgKiguZ290KSB9CisJX19yZWxfZHluX3N0YXJ0ID0gLjsKKwkucmVsLmR5biA6IHsgKigucmVsLmR5bikgfQorCV9fcmVsX2R5bl9lbmQgPSAuOwogCi0JX19nb3RfZW5kID0gLjsKKwlfX2R5bnN5bV9zdGFydCA9IC47CisJLmR5bnN5bSA6IHsgKiguZHluc3ltKSB9CisKKwkuID0gQUxJR04oNCk7CisKIAkuID0gLjsKIAlfX3VfYm9vdF9jbWRfc3RhcnQgPSAuOwogCS51X2Jvb3RfY21kIDogeyAqKC51X2Jvb3RfY21kKSB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9jcHUvczNjNDRiMC9zdGFydC5TIGIvYXJjaC9hcm0vY3B1L3MzYzQ0YjAvc3RhcnQuUwppbmRleCAyMDA5MWIyLi5jNThkYTk4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9jcHUvczNjNDRiMC9zdGFydC5TCisrKyBiL2FyY2gvYXJtL2NwdS9zM2M0NGIwL3N0YXJ0LlMKQEAgLTI3LDExICsyNywxMCBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0KKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPHZlcnNpb24uaD4KIAotCiAvKgogICogSnVtcCB2ZWN0b3IgdGFibGUKICAqLwpAQCAtMjEyLDcgKzIxMSw3IEBACiAJc3RyCXI0LCBbcjJdCiAJYWRkCXIyLCByMiwgIzQKIAljbXAJcjIsIHIzCi0JYm5lCWZpeGxvb3AKKwlibG8JZml4bG9vcAogI2VuZGlmCiAvKgogCW5vdyBjb3B5IHRvIHNyYW0gdGhlIGludGVycnVwdCB2ZWN0b3IKQEAgLTMzMSw3ICszMzAsNyBAQAogc3RhY2tfc2V0dXA6CiAJbGRyCXIwLCBfVEVYVF9CQVNFCQkvKiB1cHBlciAxMjggS2lCOiByZWxvY2F0ZWQgdWJvb3QgICAqLwogCXN1YglyMCwgcjAsICNDT05GSUdfU1lTX01BTExPQ19MRU4JLyogbWFsbG9jIGFyZWEgICAgICAgICAgICAgICAgICAgICAgKi8KLQlzdWIJcjAsIHIwLCAjQ09ORklHX1NZU19HQkxfREFUQV9TSVpFIC8qIGJkaW5mbyAgICAgICAgICAgICAgICAgICAgICAgICovCisJc3ViCXIwLCByMCwgI0dFTkVSQVRFRF9HQkxfREFUQV9TSVpFIC8qIGJkaW5mbyAgICAgICAgICAgICAgICAgICAgICAgICovCiAjaWZkZWYgQ09ORklHX1VTRV9JUlEKIAlzdWIJcjAsIHIwLCAjKENPTkZJR19TVEFDS1NJWkVfSVJRK0NPTkZJR19TVEFDS1NJWkVfRklRKQogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jcHUvc2ExMTAwL3N0YXJ0LlMgYi9hcmNoL2FybS9jcHUvc2ExMTAwL3N0YXJ0LlMKaW5kZXggOGVhYmI2Ni4uZTZhZmUwZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY3B1L3NhMTEwMC9zdGFydC5TCisrKyBiL2FyY2gvYXJtL2NwdS9zYTExMDAvc3RhcnQuUwpAQCAtMjUsMTEgKzI1LDEwIEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLQorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8dmVyc2lvbi5oPgogCi0KIC8qCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTIxNiw3ICsyMTUsNyBAQAogCXN0cglyNCwgW3IyXQogCWFkZAlyMiwgcjIsICM0CiAJY21wCXIyLCByMwotCWJuZQlmaXhsb29wCisJYmxvCWZpeGxvb3AKICNlbmRpZgogI2VuZGlmCS8qICNpZm5kZWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QgKi8KIApAQCAtMzAxLDcgKzMwMCw3IEBACiBzdGFja19zZXR1cDoKIAlsZHIJcjAsIF9URVhUX0JBU0UJCS8qIHVwcGVyIDEyOCBLaUI6IHJlbG9jYXRlZCB1Ym9vdCAgICovCiAJc3ViCXIwLCByMCwgI0NPTkZJR19TWVNfTUFMTE9DX0xFTgkvKiBtYWxsb2MgYXJlYSAgICAgICAgICAgICAgICAgICAgICAqLwotCXN1YglyMCwgcjAsICNDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwlzdWIJcjAsIHIwLCAjR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUgLyogYmRpbmZvICAgICAgICAgICAgICAgICAgICAgICAgKi8KICNpZmRlZiBDT05GSUdfVVNFX0lSUQogCXN1YglyMCwgcjAsICMoQ09ORklHX1NUQUNLU0laRV9JUlErQ09ORklHX1NUQUNLU0laRV9GSVEpCiAjZW5kaWYKQEAgLTQ0NSw3ICs0NDQsNyBAQAogI2lmIGRlZmluZWQoQ09ORklHX1NZU19BUk1fV0lUSE9VVF9SRUxPQykKIAlsZHIJcjIsIF9hcm1ib290X3N0YXJ0CiAJc3ViCXIyLCByMiwgIyhDT05GSUdfU1RBQ0tTSVpFK0NPTkZJR19TWVNfTUFMTE9DX0xFTikKLQlzdWIJcjIsIHIyLCAjKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSs4KSAgQCBzZXQgYmFzZSAyIHdvcmRzIGludG8gYWJvcnQgc3RhY2sKKwlzdWIJcjIsIHIyLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKzgpICBAIHNldCBiYXNlIDIgd29yZHMgaW50byBhYm9ydCBzdGFjawogI2Vsc2UKIAlsZHIJcjIsIElSUV9TVEFDS19TVEFSVF9JTgogI2VuZGlmCkBAIC00ODIsNyArNDgxLDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MpCiAJbGRyCXIxMywgX2FybWJvb3Rfc3RhcnQJCUAgc2V0dXAgb3VyIG1vZGUgc3RhY2sKIAlzdWIJcjEzLCByMTMsICMoQ09ORklHX1NUQUNLU0laRStDT05GSUdfU1lTX01BTExPQ19MRU4pCi0Jc3ViCXIxMywgcjEzLCAjKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSs4KSBAIHJlc2VydmVkIGEgY291cGxlIHNwb3RzIGluIGFib3J0IHN0YWNrCisJc3ViCXIxMywgcjEzLCAjKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKzgpIEAgcmVzZXJ2ZWQgYSBjb3VwbGUgc3BvdHMgaW4gYWJvcnQgc3RhY2sKICNlbHNlCiAJbGRyCXIxMywgSVJRX1NUQUNLX1NUQVJUX0lOCQlAIHNldHVwIG91ciBtb2RlIHN0YWNrCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FyY2gtbXg1L2NybV9yZWdzLmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcmNoLW14NS9jcm1fcmVncy5oCmluZGV4IDE0YWEyMzEuLjRlZDhlYjMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FyY2gtbXg1L2NybV9yZWdzLmgKKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vYXJjaC1teDUvY3JtX3JlZ3MuaApAQCAtMTg5LDQgKzE4OSwxNSBAQAogI2RlZmluZSBNWENfQ0NNX0NTQ0RSMV9VQVJUX0NMS19QT0RGX09GRlNFVAkJMAogI2RlZmluZSBNWENfQ0NNX0NTQ0RSMV9VQVJUX0NMS19QT0RGX01BU0sJCTB4NwogCisvKiBEZWZpbmUgdGhlIGJpdHMgaW4gcmVnaXN0ZXIgQ0NEUiAqLworI2RlZmluZSBNWENfQ0NNX0NDRFJfSVBVX0hTX01BU0sJCQkoMHgxIDw8IDE3KQorCisvKiBEZWZpbmUgdGhlIGJpdHMgaW4gcmVnaXN0ZXIgQ0NHUnggKi8KKyNkZWZpbmUgTVhDX0NDTV9DQ0dSX0NHX01BU0sJCQkJMHgzCisKKyNkZWZpbmUgTVhDX0NDTV9DQ0dSNV9DRzVfT0ZGU0VUCQkJMTAKKworLyogRGVmaW5lIHRoZSBiaXRzIGluIHJlZ2lzdGVyIENMUENSICovCisjZGVmaW5lIE1YQ19DQ01fQ0xQQ1JfQllQQVNTX0lQVV9MUE1fSFMgICAgICAgICAgICAgICAgICgweDEgPDwgMTgpCisKICNlbmRpZgkJCQkvKiBfX0FSQ0hfQVJNX01BQ0hfTVg1MV9DUk1fUkVHU19IX18gKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2dsb2JhbF9kYXRhLmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oCmluZGV4IDZkYWU0MzIuLjU0MzhlYmMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2dsb2JhbF9kYXRhLmgKKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogICogZ2xvYmFsIHZhcmlhYmxlcyBkdXJpbmcgc3lzdGVtIGluaXRpYWxpemF0aW9uICh1bnRpbCB3ZSBoYXZlIHNldAogICogdXAgdGhlIG1lbW9yeSBjb250cm9sbGVyIHNvIHRoYXQgd2UgY2FuIHVzZSBSQU0pLgogICoKLSAqIEtlZXAgaXQgKlNNQUxMKiBhbmQgcmVtZW1iZXIgdG8gc2V0IENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSA+IHNpemVvZihnZF90KQorICogS2VlcCBpdCAqU01BTEwqIGFuZCByZW1lbWJlciB0byBzZXQgR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUgPiBzaXplb2YoZ2RfdCkKICAqLwogCiB0eXBlZGVmCXN0cnVjdAlnbG9iYWxfZGF0YSB7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9saWIvYm9hcmQuYyBiL2FyY2gvYXJtL2xpYi9ib2FyZC5jCmluZGV4IGZmZTI2MWIuLmFmOWE0MTQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2xpYi9ib2FyZC5jCisrKyBiL2FyY2gvYXJtL2xpYi9ib2FyZC5jCkBAIC03MTYsNiArNzE2LDkgQEAKICNpZiBkZWZpbmVkKENPTkZJR19DTURfSTJDKQogCWkyY19yZWxvYygpOwogI2VuZGlmCisjaWYgZGVmaW5lZChDT05GSUdfQ01EX09ORU5BTkQpCisJb25lbmFuZF9yZWxvYygpOworI2VuZGlmCiAjZW5kaWYgLyogIWRlZmluZWQoQ09ORklHX1JFTE9DX0ZJWFVQX1dPUktTKSAqLwogCiAjaWZkZWYgQ09ORklHX0xPR0JVRkZFUgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbGliL2Jvb3RtLmMgYi9hcmNoL2FybS9saWIvYm9vdG0uYwppbmRleCAyZTdiMmUxLi5hMTY0OWVlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9saWIvYm9vdG0uYworKysgYi9hcmNoL2FybS9saWIvYm9vdG0uYwpAQCAtMTc3LDggKzE3Nyw2IEBACiBzdGF0aWMgaW50IGJvb3RtX2xpbnV4X2ZkdChpbnQgbWFjaGlkLCBib290bV9oZWFkZXJzX3QgKmltYWdlcykKIHsKIAl1bG9uZyByZF9sZW47Ci0JYmRfdCAqYmQgPSBnZC0+YmQ7Ci0JY2hhciAqczsKIAl2b2lkICgqa2VybmVsX2VudHJ5KShpbnQgemVybywgaW50IGR0X21hY2hpZCwgdm9pZCAqZHRibG9iKTsKIAl1bG9uZyBib290bWFwX2Jhc2UgPSBnZXRlbnZfYm9vdG1fbG93KCk7CiAJdWxvbmcgb2Zfc2l6ZSA9IGltYWdlcy0+ZnRfbGVuOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbGliL2ludGVycnVwdHMuYyBiL2FyY2gvYXJtL2xpYi9pbnRlcnJ1cHRzLmMKaW5kZXggOWEyMWU3Yi4uOTBhYTA0YiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbGliL2ludGVycnVwdHMuYworKysgYi9hcmNoL2FybS9saWIvaW50ZXJydXB0cy5jCkBAIC01MCw3ICs1MCw3IEBACiAJSVJRX1NUQUNLX1NUQVJUID0gZ2QtPmlycV9zcCAtIDQ7CiAJSVJRX1NUQUNLX1NUQVJUX0lOID0gZ2QtPmlycV9zcCArIDg7CiAjZWxzZQotCUlSUV9TVEFDS19TVEFSVCA9IF9hcm1ib290X3N0YXJ0IC0gQ09ORklHX1NZU19NQUxMT0NfTEVOIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFIC0gNDsKKwlJUlFfU1RBQ0tfU1RBUlQgPSBfYXJtYm9vdF9zdGFydCAtIENPTkZJR19TWVNfTUFMTE9DX0xFTiAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFIC0gNDsKICNlbmRpZgogCUZJUV9TVEFDS19TVEFSVCA9IElSUV9TVEFDS19TVEFSVCAtIENPTkZJR19TVEFDS1NJWkVfSVJROwogCmRpZmYgLS1naXQgYS9hcmNoL2F2cjMyL2NwdS9zdGFydC5TIGIvYXJjaC9hdnIzMi9jcHUvc3RhcnQuUwppbmRleCAwNmJmNGM2Li45NzE0MGU5IDEwMDY0NAotLS0gYS9hcmNoL2F2cjMyL2NwdS9zdGFydC5TCisrKyBiL2FyY2gvYXZyMzIvY3B1L3N0YXJ0LlMKQEAgLTE5LDYgKzE5LDcgQEAKICAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CiAjaW5jbHVkZSA8YXNtL3N5c3JlZy5oPgpkaWZmIC0tZ2l0IGEvYXJjaC9hdnIzMi9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oIGIvYXJjaC9hdnIzMi9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oCmluZGV4IDVhN2FlZDkuLjRlZjhmYzUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXZyMzIvaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaAorKysgYi9hcmNoL2F2cjMyL2luY2x1ZGUvYXNtL2dsb2JhbF9kYXRhLmgKQEAgLTI5LDcgKzI5LDcgQEAKICAqIGdsb2JhbCB2YXJpYWJsZXMgZHVyaW5nIHN5c3RlbSBpbml0aWFsaXphdGlvbiAodW50aWwgd2UgaGF2ZSBzZXQKICAqIHVwIHRoZSBtZW1vcnkgY29udHJvbGxlciBzbyB0aGF0IHdlIGNhbiB1c2UgUkFNKS4KICAqCi0gKiBLZWVwIGl0ICpTTUFMTCogYW5kIHJlbWVtYmVyIHRvIHNldCBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgPiBzaXplb2YoZ2RfdCkKKyAqIEtlZXAgaXQgKlNNQUxMKiBhbmQgcmVtZW1iZXIgdG8gc2V0IEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFID4gc2l6ZW9mKGdkX3QpCiAgKi8KIAogdHlwZWRlZglzdHJ1Y3QJZ2xvYmFsX2RhdGEgewpkaWZmIC0tZ2l0IGEvYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS9jb25maWcuaCBiL2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vY29uZmlnLmgKaW5kZXggMjE1ZTBmMi4uMzRjYTY4YyAxMDA2NDQKLS0tIGEvYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS9jb25maWcuaAorKysgYi9hcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL2NvbmZpZy5oCkBAIC0xMDEsMTEgKzEwMSw4IEBACiAjaWZuZGVmIENPTkZJR19TWVNfTUFMTE9DX0JBU0UKICMgZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0JBU0UgKENPTkZJR19TWVNfTU9OSVRPUl9CQVNFIC0gQ09ORklHX1NZU19NQUxMT0NfTEVOKQogI2VuZGlmCi0jaWZuZGVmIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQotIyBkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICgxMjgpCi0jZW5kaWYKICNpZm5kZWYgQ09ORklHX1NZU19HQkxfREFUQV9BRERSCi0jIGRlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX0FERFIgKENPTkZJR19TWVNfTUFMTE9DX0JBU0UgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjIGRlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX0FERFIgKENPTkZJR19TWVNfTUFMTE9DX0JBU0UgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNlbmRpZgogI2lmbmRlZiBDT05GSUdfU1RBQ0tCQVNFCiAjIGRlZmluZSBDT05GSUdfU1RBQ0tCQVNFIChDT05GSUdfU1lTX0dCTF9EQVRBX0FERFIgLSA0KQpkaWZmIC0tZ2l0IGEvYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oIGIvYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oCmluZGV4IGQ1NTE0YjAuLmViYTVlOTMgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaAorKysgYi9hcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL2dsb2JhbF9kYXRhLmgKQEAgLTM3LDcgKzM3LDcgQEAKICAqIGdsb2JhbCB2YXJpYWJsZXMgZHVyaW5nIHN5c3RlbSBpbml0aWFsaXphdGlvbiAodW50aWwgd2UgaGF2ZSBzZXQKICAqIHVwIHRoZSBtZW1vcnkgY29udHJvbGxlciBzbyB0aGF0IHdlIGNhbiB1c2UgUkFNKS4KICAqCi0gKiBLZWVwIGl0ICpTTUFMTCogYW5kIHJlbWVtYmVyIHRvIHNldCBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgPiBzaXplb2YoZ2RfdCkKKyAqIEtlZXAgaXQgKlNNQUxMKiBhbmQgcmVtZW1iZXIgdG8gc2V0IEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFID4gc2l6ZW9mKGdkX3QpCiAgKi8KIHR5cGVkZWYgc3RydWN0IGdsb2JhbF9kYXRhIHsKIAliZF90ICpiZDsKZGlmZiAtLWdpdCBhL2FyY2gvYmxhY2tmaW4vbGliL2JvYXJkLmMgYi9hcmNoL2JsYWNrZmluL2xpYi9ib2FyZC5jCmluZGV4IGZjZmQxNzQuLjhlY2E3ZDYgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vbGliL2JvYXJkLmMKKysrIGIvYXJjaC9ibGFja2Zpbi9saWIvYm9hcmQuYwpAQCAtMjM3LDEyICsyMzcsMTIgQEAKICNlbmRpZgogCiAjaWZkZWYgREVCVUcKLQlpZiAoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFIDwgc2l6ZW9mKCpnZCkpCisJaWYgKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFIDwgc2l6ZW9mKCpnZCkpCiAJCWhhbmcoKTsKICNlbmRpZgogCXNlcmlhbF9lYXJseV9wdXRzKCJJbml0IGdsb2JhbCBkYXRhXG4iKTsKIAlnZCA9IChnZF90ICopIChDT05GSUdfU1lTX0dCTF9EQVRBX0FERFIpOwotCW1lbXNldCgodm9pZCAqKWdkLCAwLCBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpOworCW1lbXNldCgodm9pZCAqKWdkLCAwLCBHRU5FUkFURURfR0JMX0RBVEFfU0laRSk7CiAKIAkvKiBCb2FyZCBkYXRhIGluaXRpYWxpemF0aW9uICovCiAJYWRkciA9IChDT05GSUdfU1lTX0dCTF9EQVRBX0FERFIgKyBzaXplb2YoZ2RfdCkpOwpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2luY2x1ZGUvYXNtL2dsb2JhbF9kYXRhLmggYi9hcmNoL2kzODYvaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaAppbmRleCA1OTcxMTIzLi5lM2Y4YTI1IDEwMDY0NAotLS0gYS9hcmNoL2kzODYvaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaAorKysgYi9hcmNoL2kzODYvaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogICogZ2xvYmFsIHZhcmlhYmxlcyBkdXJpbmcgc3lzdGVtIGluaXRpYWxpemF0aW9uICh1bnRpbCB3ZSBoYXZlIHNldAogICogdXAgdGhlIG1lbW9yeSBjb250cm9sbGVyIHNvIHRoYXQgd2UgY2FuIHVzZSBSQU0pLgogICoKLSAqIEtlZXAgaXQgKlNNQUxMKiBhbmQgcmVtZW1iZXIgdG8gc2V0IENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSA+IHNpemVvZihnZF90KQorICogS2VlcCBpdCAqU01BTEwqIGFuZCByZW1lbWJlciB0byBzZXQgR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUgPiBzaXplb2YoZ2RfdCkKICAqLwogCiAjaWZuZGVmIF9fQVNTRU1CTFlfXwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2NwdS9tY2Y1MjI3eC9zdGFydC5TIGIvYXJjaC9tNjhrL2NwdS9tY2Y1MjI3eC9zdGFydC5TCmluZGV4IGFjNzEwOTYuLmQwOWQ0OTIgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9jcHUvbWNmNTIyN3gvc3RhcnQuUworKysgYi9hcmNoL202OGsvY3B1L21jZjUyMjd4L3N0YXJ0LlMKQEAgLTIxLDYgKzIxLDcgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8dGltZXN0YW1wLmg+CiAjaW5jbHVkZSAidmVyc2lvbi5oIgpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2NwdS9tY2Y1MjN4L3N0YXJ0LlMgYi9hcmNoL202OGsvY3B1L21jZjUyM3gvc3RhcnQuUwppbmRleCAyMGI1MGU3Li5hNzI2YjU5IDEwMDY0NAotLS0gYS9hcmNoL202OGsvY3B1L21jZjUyM3gvc3RhcnQuUworKysgYi9hcmNoL202OGsvY3B1L21jZjUyM3gvc3RhcnQuUwpAQCAtMjEsNiArMjEsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDx0aW1lc3RhbXAuaD4KICNpbmNsdWRlICJ2ZXJzaW9uLmgiCmRpZmYgLS1naXQgYS9hcmNoL202OGsvY3B1L21jZjUyeDIvc3RhcnQuUyBiL2FyY2gvbTY4ay9jcHUvbWNmNTJ4Mi9zdGFydC5TCmluZGV4IGQxZjNkODMuLmYwY2ZhNmYgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9jcHUvbWNmNTJ4Mi9zdGFydC5TCisrKyBiL2FyY2gvbTY4ay9jcHUvbWNmNTJ4Mi9zdGFydC5TCkBAIC0yMSw2ICsyMSw3IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPHRpbWVzdGFtcC5oPgogI2luY2x1ZGUgInZlcnNpb24uaCIKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9jcHUvbWNmNTMyeC9zdGFydC5TIGIvYXJjaC9tNjhrL2NwdS9tY2Y1MzJ4L3N0YXJ0LlMKaW5kZXggYTgwYjBhOS4uNTNhYzQ3MSAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2NwdS9tY2Y1MzJ4L3N0YXJ0LlMKKysrIGIvYXJjaC9tNjhrL2NwdS9tY2Y1MzJ4L3N0YXJ0LlMKQEAgLTI0LDYgKzI0LDcgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8dGltZXN0YW1wLmg+CiAjaW5jbHVkZSAidmVyc2lvbi5oIgpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2NwdS9tY2Y1NDQ1eC9zdGFydC5TIGIvYXJjaC9tNjhrL2NwdS9tY2Y1NDQ1eC9zdGFydC5TCmluZGV4IDhiNjlkMWYuLjUyNTVmMzcgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9jcHUvbWNmNTQ0NXgvc3RhcnQuUworKysgYi9hcmNoL202OGsvY3B1L21jZjU0NDV4L3N0YXJ0LlMKQEAgLTIxLDYgKzIxLDcgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8dGltZXN0YW1wLmg+CiAjaW5jbHVkZSAidmVyc2lvbi5oIgpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2NwdS9tY2Y1NDd4Xzh4L3N0YXJ0LlMgYi9hcmNoL202OGsvY3B1L21jZjU0N3hfOHgvc3RhcnQuUwppbmRleCA4NDExODYyLi5lMzA5MjNmIDEwMDY0NAotLS0gYS9hcmNoL202OGsvY3B1L21jZjU0N3hfOHgvc3RhcnQuUworKysgYi9hcmNoL202OGsvY3B1L21jZjU0N3hfOHgvc3RhcnQuUwpAQCAtMjEsNiArMjEsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDx0aW1lc3RhbXAuaD4KICNpbmNsdWRlICJ2ZXJzaW9uLmgiCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oCmluZGV4IDNhMzZmODIuLmZjNDg2ZmQgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAgKiBnbG9iYWwgdmFyaWFibGVzIGR1cmluZyBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gKHVudGlsIHdlIGhhdmUgc2V0CiAgKiB1cCB0aGUgbWVtb3J5IGNvbnRyb2xsZXIgc28gdGhhdCB3ZSBjYW4gdXNlIFJBTSkuCiAgKgotICogS2VlcCBpdCAqU01BTEwqIGFuZCByZW1lbWJlciB0byBzZXQgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFID4gc2l6ZW9mKGdkX3QpCisgKiBLZWVwIGl0ICpTTUFMTCogYW5kIHJlbWVtYmVyIHRvIHNldCBHRU5FUkFURURfR0JMX0RBVEFfU0laRSA+IHNpemVvZihnZF90KQogICovCiAKIHR5cGVkZWYJc3RydWN0CWdsb2JhbF9kYXRhIHsKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9saWIvYm9hcmQuYyBiL2FyY2gvbTY4ay9saWIvYm9hcmQuYwppbmRleCA0NTQxZTI0Li45NzZkNWJmIDEwMDY0NAotLS0gYS9hcmNoL202OGsvbGliL2JvYXJkLmMKKysrIGIvYXJjaC9tNjhrL2xpYi9ib2FyZC5jCkBAIC0zNDEsNyArMzQxLDcgQEAKIAliZC0+YmlfbWVtc2l6ZSAgID0gZ2QtPnJhbV9zaXplOwkvKiBzaXplICBvZiAgRFJBTSBtZW1vcnkgaW4gYnl0ZXMgKi8KICNpZmRlZiBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIKIAliZC0+Ymlfc3JhbXN0YXJ0ID0gQ09ORklHX1NZU19JTklUX1JBTV9BRERSOwkvKiBzdGFydCBvZiAgU1JBTSBtZW1vcnkJKi8KLQliZC0+Ymlfc3JhbXNpemUgID0gQ09ORklHX1NZU19JTklUX1JBTV9FTkQ7CS8qIHNpemUgIG9mICBTUkFNIG1lbW9yeQkqLworCWJkLT5iaV9zcmFtc2l6ZSAgPSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkU7CS8qIHNpemUgIG9mICBTUkFNIG1lbW9yeQkqLwogI2VuZGlmCiAJYmQtPmJpX21iYXJfYmFzZSA9IENPTkZJR19TWVNfTUJBUjsJCS8qIGJhc2Ugb2YgaW50ZXJuYWwgcmVnaXN0ZXJzICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9jcHUvc3RhcnQuUyBiL2FyY2gvbWljcm9ibGF6ZS9jcHUvc3RhcnQuUwppbmRleCA5OGMyNDhmLi5kNDQ5MDNiIDEwMDY0NAotLS0gYS9hcmNoL21pY3JvYmxhemUvY3B1L3N0YXJ0LlMKKysrIGIvYXJjaC9taWNyb2JsYXplL2NwdS9zdGFydC5TCkBAIC0yNCw2ICsyNCw3IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogCiAJLnRleHQKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oIGIvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL2dsb2JhbF9kYXRhLmgKaW5kZXggMDM0NDRlZi4uNTU3YWQyNyAxMDA2NDQKLS0tIGEvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL2dsb2JhbF9kYXRhLmgKKysrIGIvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL2dsb2JhbF9kYXRhLmgKQEAgLTMxLDcgKzMxLDcgQEAKICAqIGdsb2JhbCB2YXJpYWJsZXMgZHVyaW5nIHN5c3RlbSBpbml0aWFsaXphdGlvbiAodW50aWwgd2UgaGF2ZSBzZXQKICAqIHVwIHRoZSBtZW1vcnkgY29udHJvbGxlciBzbyB0aGF0IHdlIGNhbiB1c2UgUkFNKS4KICAqCi0gKiBLZWVwIGl0ICpTTUFMTCogYW5kIHJlbWVtYmVyIHRvIHNldCBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgPiBzaXplb2YoZ2RfdCkKKyAqIEtlZXAgaXQgKlNNQUxMKiBhbmQgcmVtZW1iZXIgdG8gc2V0IEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFID4gc2l6ZW9mKGdkX3QpCiAgKi8KIAogdHlwZWRlZglzdHJ1Y3QJZ2xvYmFsX2RhdGEgewpkaWZmIC0tZ2l0IGEvYXJjaC9taWNyb2JsYXplL2xpYi9ib2FyZC5jIGIvYXJjaC9taWNyb2JsYXplL2xpYi9ib2FyZC5jCmluZGV4IDg0MjY3Y2QuLmVlZWY1NzkgMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6ZS9saWIvYm9hcmQuYworKysgYi9hcmNoL21pY3JvYmxhemUvbGliL2JvYXJkLmMKQEAgLTk2LDcgKzk2LDcgQEAKIAl1bG9uZyBmbGFzaF9zaXplID0gMDsKICNlbmRpZgogCWFzbSAoIm5vcCIpOwkvKiBGSVhNRSBnZCBpcyBub3QgaW5pdGlhbGl6ZSAtIHdhaXQgKi8KLQltZW1zZXQgKCh2b2lkICopZ2QsIDAsIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSk7CisJbWVtc2V0ICgodm9pZCAqKWdkLCAwLCBHRU5FUkFURURfR0JMX0RBVEFfU0laRSk7CiAJZ2QtPmJkID0gKGJkX3QgKikgKGdkICsgMSk7CS8qIEF0IGVuZCBvZiBnbG9iYWwgZGF0YSAqLwogCWdkLT5iYXVkcmF0ZSA9IENPTkZJR19CQVVEUkFURTsKIAliZCA9IGdkLT5iZDsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9jcHUvY2FjaGUuUyBiL2FyY2gvbWlwcy9jcHUvY2FjaGUuUwppbmRleCBmZjRmMTFjLi40YjMwYzg5IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvY3B1L2NhY2hlLlMKKysrIGIvYXJjaC9taXBzL2NwdS9jYWNoZS5TCkBAIC0yMiw2ICsyMiw3IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPGFzbS9hc20uaD4KICNpbmNsdWRlIDxhc20vcmVnZGVmLmg+CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvY3B1L3N0YXJ0LlMgYi9hcmNoL21pcHMvY3B1L3N0YXJ0LlMKaW5kZXggNTdkYjU4OS4uZDZiY2VmNiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2NwdS9zdGFydC5TCisrKyBiL2FyY2gvbWlwcy9jcHUvc3RhcnQuUwpAQCAtMjIsNiArMjIsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxhc20vcmVnZGVmLmg+CiAjaW5jbHVkZSA8YXNtL21pcHNyZWdzLmg+CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oCmluZGV4IGJmMWJmYzMuLjI3MWEyOTAgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oCkBAIC0zMyw3ICszMyw3IEBACiAgKiBnbG9iYWwgdmFyaWFibGVzIGR1cmluZyBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gKHVudGlsIHdlIGhhdmUgc2V0CiAgKiB1cCB0aGUgbWVtb3J5IGNvbnRyb2xsZXIgc28gdGhhdCB3ZSBjYW4gdXNlIFJBTSkuCiAgKgotICogS2VlcCBpdCAqU01BTEwqIGFuZCByZW1lbWJlciB0byBzZXQgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFID4gc2l6ZW9mKGdkX3QpCisgKiBLZWVwIGl0ICpTTUFMTCogYW5kIHJlbWVtYmVyIHRvIHNldCBHRU5FUkFURURfR0JMX0RBVEFfU0laRSA+IHNpemVvZihnZF90KQogICovCiAKIHR5cGVkZWYJc3RydWN0CWdsb2JhbF9kYXRhIHsKZGlmZiAtLWdpdCBhL2FyY2gvbmlvczIvY3B1L3N0YXJ0LlMgYi9hcmNoL25pb3MyL2NwdS9zdGFydC5TCmluZGV4IDc2ZDNiNTIuLjliMGY1MmQgMTAwNjQ0Ci0tLSBhL2FyY2gvbmlvczIvY3B1L3N0YXJ0LlMKKysrIGIvYXJjaC9uaW9zMi9jcHUvc3RhcnQuUwpAQCAtMjEsNyArMjEsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0KKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPHRpbWVzdGFtcC5oPgogI2luY2x1ZGUgPHZlcnNpb24uaD4KZGlmZiAtLWdpdCBhL2FyY2gvbmlvczIvbGliL2JvYXJkLmMgYi9hcmNoL25pb3MyL2xpYi9ib2FyZC5jCmluZGV4IGY4M2U2OTEuLmY2YzZiYzEgMTAwNjQ0Ci0tLSBhL2FyY2gvbmlvczIvbGliL2JvYXJkLmMKKysrIGIvYXJjaC9uaW9zMi9saWIvYm9hcmQuYwpAQCAtOTUsNyArOTUsNyBAQAogCS8qIGNvbXBpbGVyIG9wdGltaXphdGlvbiBiYXJyaWVyIG5lZWRlZCBmb3IgR0NDID49IDMuNCAqLwogCV9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiAKLQltZW1zZXQoIGdkLCAwLCBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgKTsKKwltZW1zZXQoIGdkLCAwLCBHRU5FUkFURURfR0JMX0RBVEFfU0laRSApOwogCiAJZ2QtPmJkID0gKGJkX3QgKikoZ2QrMSk7CS8qIEF0IGVuZCBvZiBnbG9iYWwgZGF0YSAqLwogCWdkLT5iYXVkcmF0ZSA9IENPTkZJR19CQVVEUkFURTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvNzR4eF83eHgvc3RhcnQuUyBiL2FyY2gvcG93ZXJwYy9jcHUvNzR4eF83eHgvc3RhcnQuUwppbmRleCA1NzNlNmQwLi4yODA3ODFlIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY3B1Lzc0eHhfN3h4L3N0YXJ0LlMKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS83NHh4Xzd4eC9zdGFydC5TCkBAIC0zMiw2ICszMiw3IEBACiAgKiAgYm9hcmRfaW5pdCBsaWVzIGF0IGEgcXVpdGUgaGlnaCBhZGRyZXNzIGFuZCB3aGVuIHRoZSBjcHUgaGFzCiAgKiAganVtcGVkIHRoZXJlLCBldmVyeXRoaW5nIGlzIG9rLgogICovCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDw3NHh4Xzd4eC5oPgogI2luY2x1ZGUgPHRpbWVzdGFtcC5oPgpAQCAtODE5LDcgKzgyMCw3IEBACiAJICovCiAJbGlzCXIzLCAoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICYgfjMxKUBoCiAJb3JpCXIzLCByMywgKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAmIH4zMSlAbAotCWxpCXI0LCAoKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EICYgfjMxKSArIFwKKwlsaQlyNCwgKChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgJiB+MzEpICsgXAogCQkgICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgJiAzMSkgKyAzMSkgLyAzMgogCW10Y3RyCXI0CiAxOgpAQCAtODQwLDcgKzg0MSw3IEBACiAJLyogaW52YWxpZGF0ZSB0aGUgSU5JVF9SQU0gc2VjdGlvbiAqLwogCWxpcwlyMywgKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAmIH4zMSlAaAogCW9yaQlyMywgcjMsIChDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgJiB+MzEpQGwKLQlsaQlyNCwgKChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAmIH4zMSkgKyBcCisJbGkJcjQsICgoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICYgfjMxKSArIFwKIAkJICAgICAoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICYgMzEpICsgMzEpIC8gMzIKIAltdGN0cglyNAogMToJaWNiaQlyMCwgcjMKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjNTEyeC9zdGFydC5TIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM1MTJ4L3N0YXJ0LlMKaW5kZXggMjI2NWM4Yy4uZmUzNTE5MCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM1MTJ4L3N0YXJ0LlMKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM1MTJ4L3N0YXJ0LlMKQEAgLTI5LDYgKzI5LDcgQEAKICAqICBVLUJvb3QgLSBTdGFydHVwIENvZGUgZm9yIE1QQzUxMnggYmFzZWQgRW1iZWRkZWQgQm9hcmRzCiAgKi8KIAorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8dGltZXN0YW1wLmg+CiAjaW5jbHVkZSA8dmVyc2lvbi5oPgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM1eHgvc3RhcnQuUyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjNXh4L3N0YXJ0LlMKaW5kZXggZGE0MjU1Ny4uNjM0NDljMyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM1eHgvc3RhcnQuUworKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzV4eC9zdGFydC5TCkBAIC0zMCw2ICszMCw3IEBACiAgKgogICovCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPG1wYzV4eC5oPgogI2luY2x1ZGUgPHRpbWVzdGFtcC5oPgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM1eHh4L3N0YXJ0LlMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzV4eHgvc3RhcnQuUwppbmRleCA5Mjg1OGZjLi5hZDU0Njc3IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY3B1L21wYzV4eHgvc3RhcnQuUworKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzV4eHgvc3RhcnQuUwpAQCAtMjUsNiArMjUsNyBAQAogLyoKICAqICBVLUJvb3QgLSBTdGFydHVwIENvZGUgZm9yIE1QQzV4eHggQ1BVcwogICovCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxtcGM1eHh4Lmg+CiAjaW5jbHVkZSA8dGltZXN0YW1wLmg+CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzgyMjAvc3RhcnQuUyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODIyMC9zdGFydC5TCmluZGV4IGI1YzE2MGIuLmIwMjllODQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODIyMC9zdGFydC5TCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODIyMC9zdGFydC5TCkBAIC0yNSw2ICsyNSw3IEBACiAvKgogICogIFUtQm9vdCAtIFN0YXJ0dXAgQ29kZSBmb3IgTVBDODIyMCBDUFVzCiAgKi8KKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPG1wYzgyMjAuaD4KICNpbmNsdWRlIDx0aW1lc3RhbXAuaD4KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODI0eC9zdGFydC5TIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4MjR4L3N0YXJ0LlMKaW5kZXggZDEwMjMxZS4uNjE2ZGU1OCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4MjR4L3N0YXJ0LlMKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4MjR4L3N0YXJ0LlMKQEAgLTM3LDYgKzM3LDcgQEAKICAqIGJvYXJkX2luaXQgd2lsbCBjaGFuZ2UgQ1MwIHRvIGJlIHBvc2l0aW9uZWQgYXQgdGhlIGNvcnJlY3QKICAqIGFkZHJlc3MgYW5kIChzKWRyYW0gd2lsbCBiZSBwb3NpdGlvbmVkIGF0IGFkZHJlc3MgMAogICovCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxtcGM4MjR4Lmg+CiAjaW5jbHVkZSA8dGltZXN0YW1wLmg+CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzgyNjAvc3RhcnQuUyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODI2MC9zdGFydC5TCmluZGV4IDU1YzY0ZWEuLjUyMWE2MzkgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODI2MC9zdGFydC5TCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODI2MC9zdGFydC5TCkBAIC0yNSw2ICsyNSw3IEBACiAvKgogICogIFUtQm9vdCAtIFN0YXJ0dXAgQ29kZSBmb3IgTVBDODI2MCBQb3dlclBDIGJhc2VkIEVtYmVkZGVkIEJvYXJkcwogICovCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxtcGM4MjYwLmg+CiAjaW5jbHVkZSA8dGltZXN0YW1wLmg+CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzgzeHgvY3B1X2luaXQuYyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODN4eC9jcHVfaW5pdC5jCmluZGV4IGYwMWMwOWEuLjdhMWNhZTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODN4eC9jcHVfaW5pdC5jCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODN4eC9jcHVfaW5pdC5jCkBAIC0zMjksNyArMzI5LDcgQEAKICNpZmRlZiBDT05GSUdfVVNCX0VIQ0lfRlNMCiAjaWZuZGVmIENPTkZJR19NUEM4MzR4CiAJdWludDMyX3QgdGVtcDsKLQlzdHJ1Y3QgdXNiX2VoY2kgKmVoY2kgPSAoc3RydWN0IHVzYl9laGNpICopQ09ORklHX1NZU19NUEM4eHh4X1VTQl9BRERSOworCXN0cnVjdCB1c2JfZWhjaSAqZWhjaSA9IChzdHJ1Y3QgdXNiX2VoY2kgKilDT05GSUdfU1lTX0ZTTF9VU0JfQUREUjsKIAogCS8qIENvbmZpZ3VyZSBpbnRlcmZhY2UuICovCiAJc2V0Yml0c19iZTMyKCZlaGNpLT5jb250cm9sLCBSRUZTRUxfMTZNSFogfCBVVE1JX1BIWV9FTik7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzgzeHgvc3RhcnQuUyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODN4eC9zdGFydC5TCmluZGV4IDUzNjYwNGYuLmEzNTY5N2QgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODN4eC9zdGFydC5TCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODN4eC9zdGFydC5TCkBAIC0yNyw2ICsyNyw3IEBACiAgKiAgVS1Cb290IC0gU3RhcnR1cCBDb2RlIGZvciBNUEM4M3h4IFBvd2VyUEMgYmFzZWQgRW1iZWRkZWQgQm9hcmRzCiAgKi8KIAorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8bXBjODN4eC5oPgogI2luY2x1ZGUgPHRpbWVzdGFtcC5oPgpAQCAtMTA3Miw3ICsxMDczLDcgQEAKIAkgKi8KIAlsaXMJcjMsIChDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgJiB+MzEpQGgKIAlvcmkJcjMsIHIzLCAoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICYgfjMxKUBsCi0JbGkJcjQsICgoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgJiB+MzEpICsgXAorCWxpCXI0LCAoKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAmIH4zMSkgKyBcCiAJCSAgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAmIDMxKSArIDMxKSAvIDMyCiAJbXRjdHIJcjQKIDE6CkBAIC0xMDk0LDcgKzEwOTUsNyBAQAogCS8qIGludmFsaWRhdGUgdGhlIElOSVRfUkFNIHNlY3Rpb24gKi8KIAlsaXMJcjMsIChDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgJiB+MzEpQGgKIAlvcmkJcjMsIHIzLCAoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICYgfjMxKUBsCi0JbGkJcjQsICgoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgJiB+MzEpICsgXAorCWxpCXI0LCAoKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAmIH4zMSkgKyBcCiAJCSAgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAmIDMxKSArIDMxKSAvIDMyCiAJbXRjdHIJcjQKIDE6CWljYmkJcjAsIHIzCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvY29uZmlnLm1rIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2NvbmZpZy5tawppbmRleCBmMDdkOTIwLi5jZTQzNzZiIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvY29uZmlnLm1rCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9jb25maWcubWsKQEAgLTI1LDYgKzI1LDEwIEBACiAKIFBMQVRGT1JNX0NQUEZMQUdTICs9IC1mZml4ZWQtcjIgLVdhLC1tZTUwMCAtbXNvZnQtZmxvYXQgLW1uby1zdHJpbmcKIAorIyBFbmFibGUgZ2Mtc2VjdGlvbnMgdG8gZW5hYmxlIGdlbmVyYXRpb24gb2Ygc21hbGxlciBpbWFnZXMuCitQTEFURk9STV9MREZMQUdTICs9IC0tZ2Mtc2VjdGlvbnMKK1BMQVRGT1JNX1JFTEZMQUdTICs9IC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zCisKICMgLW1zcGU9eWVzIGlzIG5lZWRlZCB0byBoYXZlIC1tbm8tc3BlIGFjY2VwdGVkIGJ5IGEgYnVnZ3kgR0NDOwogIyBzZWUgIltQQVRDSCxyczYwMDBdIG1ha2UgLW1uby1zcGUgd29yayBhcyBleHBlY3RlZCIgb24KICMgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMDgtMDQvbXNnMDAzMTEuaHRtbApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2NwdS5jIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2NwdS5jCmluZGV4IDNmODA3MDAuLmZjNWQ5NTEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9jcHUuYworKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvY3B1LmMKQEAgLTM0LDYgKzM0LDkgQEAKICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vbW11Lmg+CiAjaW5jbHVkZSA8YXNtL2ZzbF9sYXcuaD4KKyNpbmNsdWRlIDxwb3N0Lmg+CisjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9mc2xfZGRyX3NkcmFtLmg+CiAKIERFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOwogCkBAIC0yODIsMyArMjg1LDIxOSBAQAogCXByaW50X2xhd3MoKTsKIAlwcmludF9sYmNfcmVncygpOwogfQorCisjaWYgQ09ORklHX1BPU1QgJiBDT05GSUdfU1lTX1BPU1RfTUVNT1JZCisKKy8qIEJvYXJkLXNwZWNpZmljIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGVhY2ggYm9hcmQncyBkZHIuYyAqLwordm9pZCBmc2xfZGRyX2dldF9zcGQoZ2VuZXJpY19zcGRfZWVwcm9tX3QgKmN0cmxfZGltbXNfc3BkLAorCXVuc2lnbmVkIGludCBjdHJsX251bSk7Cit2b2lkIHJlYWRfdGxiY2FtX2VudHJ5KGludCBpZHgsIHUzMiAqdmFsaWQsIHUzMiAqdHNpemUsIHVuc2lnbmVkIGxvbmcgKmVwbiwKKwkJICAgICAgIHBoeXNfYWRkcl90ICpycG4pOwordW5zaWduZWQgaW50CisJc2V0dXBfZGRyX3RsYnNfcGh5cyhwaHlzX2FkZHJfdCBwX2FkZHIsIHVuc2lnbmVkIGludCBtZW1zaXplX2luX21lZyk7CisKK3N0YXRpYyB2b2lkIGR1bXBfc3BkX2Rkcl9yZWcodm9pZCkKK3sKKwlpbnQgaSwgaiwgaywgbTsKKwl1OCAqcF84OworCXUzMiAqcF8zMjsKKwljY3NyX2Rkcl90ICpkZHJbQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlNdOworCWdlbmVyaWNfc3BkX2VlcHJvbV90CisJCXNwZFtDT05GSUdfTlVNX0REUl9DT05UUk9MTEVSU11bQ09ORklHX0RJTU1fU0xPVFNfUEVSX0NUTFJdOworCisJZm9yIChpID0gMDsgaSA8IENPTkZJR19OVU1fRERSX0NPTlRST0xMRVJTOyBpKyspCisJCWZzbF9kZHJfZ2V0X3NwZChzcGRbaV0sIGkpOworCisJcHV0cygiU1BEIGRhdGEgb2YgYWxsIGRpbW1zICh6ZXJvIHZhdWxlIGlzIG9taXR0ZWQpLi4uXG4iKTsKKwlwdXRzKCJCeXRlIChoZXgpICAiKTsKKwlrID0gMTsKKwlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlM7IGkrKykgeworCQlmb3IgKGogPSAwOyBqIDwgQ09ORklHX0RJTU1fU0xPVFNfUEVSX0NUTFI7IGorKykKKwkJCXByaW50ZigiRGltbSVkICIsIGsrKyk7CisJfQorCXB1dHMoIlxuIik7CisJZm9yIChrID0gMDsgayA8IHNpemVvZihnZW5lcmljX3NwZF9lZXByb21fdCk7IGsrKykgeworCQltID0gMDsKKwkJcHJpbnRmKCIlM2QgKDB4JTAyeCkgICIsIGssIGspOworCQlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlM7IGkrKykgeworCQkJZm9yIChqID0gMDsgaiA8IENPTkZJR19ESU1NX1NMT1RTX1BFUl9DVExSOyBqKyspIHsKKwkJCQlwXzggPSAodTggKikgJnNwZFtpXVtqXTsKKwkJCQlpZiAocF84W2tdKSB7CisJCQkJCXByaW50ZigiMHglMDJ4ICAiLCBwXzhba10pOworCQkJCQltKys7CisJCQkJfSBlbHNlCisJCQkJCXB1dHMoIiAgICAgICIpOworCQkJfQorCQl9CisJCWlmIChtKQorCQkJcHV0cygiXG4iKTsKKwkJZWxzZQorCQkJcHV0cygiXHIiKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlM7IGkrKykgeworCQlzd2l0Y2ggKGkpIHsKKwkJY2FzZSAwOgorCQkJZGRyW2ldID0gKHZvaWQgKilDT05GSUdfU1lTX01QQzg1eHhfRERSX0FERFI7CisJCQlicmVhazsKKyNpZmRlZiBDT05GSUdfU1lTX01QQzg1eHhfRERSMl9BRERSCisJCWNhc2UgMToKKwkJCWRkcltpXSA9ICh2b2lkICopQ09ORklHX1NZU19NUEM4NXh4X0REUjJfQUREUjsKKwkJCWJyZWFrOworI2VuZGlmCisJCWRlZmF1bHQ6CisJCQlwcmludGYoIiVzIHVuZXhwZWN0ZWQgY29udHJvbGxlciBudW1iZXIgPSAldVxuIiwKKwkJCQlfX2Z1bmNfXywgaSk7CisJCQlyZXR1cm47CisJCX0KKwl9CisJcHJpbnRmKCJERFIgcmVnaXN0ZXJzIGR1bXAgZm9yIGFsbCBjb250cm9sbGVycyAiCisJCSIoemVybyB2YXVsZSBpcyBvbWl0dGVkKS4uLlxuIik7CisJcHV0cygiT2Zmc2V0IChoZXgpICAgIik7CisJZm9yIChpID0gMDsgaSA8IENPTkZJR19OVU1fRERSX0NPTlRST0xMRVJTOyBpKyspCisJCXByaW50ZigiICAgICBCYXNlICsgMHglMDR4IiwgKHUzMilkZHJbaV0gJiAweEZGRkYpOworCXB1dHMoIlxuIik7CisJZm9yIChrID0gMDsgayA8IHNpemVvZihjY3NyX2Rkcl90KS80OyBrKyspIHsKKwkJbSA9IDA7CisJCXByaW50ZigiJTZkICgweCUwNHgpIiwgayAqIDQsIGsgKiA0KTsKKwkJZm9yIChpID0gMDsgaSA8IENPTkZJR19OVU1fRERSX0NPTlRST0xMRVJTOyBpKyspIHsKKwkJCXBfMzIgPSAodTMyICopIGRkcltpXTsKKwkJCWlmIChwXzMyW2tdKSB7CisJCQkJcHJpbnRmKCIgICAgICAgIDB4JTA4eCIsIHBfMzJba10pOworCQkJCW0rKzsKKwkJCX0gZWxzZQorCQkJCXB1dHMoIiAgICAgICAgICAgICAgICAgICIpOworCQl9CisJCWlmIChtKQorCQkJcHV0cygiXG4iKTsKKwkJZWxzZQorCQkJcHV0cygiXHIiKTsKKwl9CisJcHV0cygiXG4iKTsKK30KKworLyogaW52YWxpZCB0aGUgVExCcyBmb3IgRERSIGFuZCBzZXR1cCBuZXcgb25lcyB0byBjb3ZlciBwX2FkZHIgKi8KK3N0YXRpYyBpbnQgcmVzZXRfdGxiKHBoeXNfYWRkcl90IHBfYWRkciwgdTMyIHNpemUsIHBoeXNfYWRkcl90ICpwaHlzX29mZnNldCkKK3sKKwl1MzIgdnN0YXJ0ID0gQ09ORklHX1NZU19ERFJfU0RSQU1fQkFTRTsKKwl1bnNpZ25lZCBsb25nIGVwbjsKKwl1MzIgdHNpemUsIHZhbGlkLCBwdHI7CisJcGh5c19hZGRyX3QgcnBuID0gMDsKKwlpbnQgZGRyX2VzZWw7CisKKwlwdHIgPSB2c3RhcnQ7CisKKwl3aGlsZSAocHRyIDwgKHZzdGFydCArIHNpemUpKSB7CisJCWRkcl9lc2VsID0gZmluZF90bGJfaWR4KCh2b2lkICopcHRyLCAxKTsKKwkJaWYgKGRkcl9lc2VsICE9IC0xKSB7CisJCQlyZWFkX3RsYmNhbV9lbnRyeShkZHJfZXNlbCwgJnZhbGlkLCAmdHNpemUsICZlcG4sICZycG4pOworCQkJZGlzYWJsZV90bGIoZGRyX2VzZWwpOworCQl9CisJCXB0ciArPSBUU0laRV9UT19CWVRFUyh0c2l6ZSk7CisJfQorCisJLyogU2V0dXAgbmV3IHRsYiB0byBjb3ZlciB0aGUgcGh5c2ljYWwgYWRkcmVzcyAqLworCXNldHVwX2Rkcl90bGJzX3BoeXMocF9hZGRyLCBzaXplPj4yMCk7CisKKwlwdHIgPSB2c3RhcnQ7CisJZGRyX2VzZWwgPSBmaW5kX3RsYl9pZHgoKHZvaWQgKilwdHIsIDEpOworCWlmIChkZHJfZXNlbCAhPSAtMSkgeworCQlyZWFkX3RsYmNhbV9lbnRyeShkZHJfZXNlbCwgJnZhbGlkLCAmdHNpemUsICZlcG4sIHBoeXNfb2Zmc2V0KTsKKwl9IGVsc2UgeworCQlwcmludGYoIlRMQiBlcnJvciBpbiBmdW5jdGlvbiAlc1xuIiwgX19mdW5jX18pOworCQlyZXR1cm4gLTE7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBzbGlkZSB0aGUgdGVzdGluZyB3aW5kb3cgdXAgdG8gdGVzdCBhbm90aGVyIGFyZWEKKyAqIGZvciAzMl9iaXQgc3lzdGVtLCB0aGUgbWF4aW11bSB0ZXN0YWJsZSBtZW1vcnkgaXMgbGltaXRlZCB0bworICogQ09ORklHX01BWF9NRU1fTUFQUEVECisgKi8KK2ludCBhcmNoX21lbW9yeV90ZXN0X2FkdmFuY2UodTMyICp2c3RhcnQsIHUzMiAqc2l6ZSwgcGh5c19hZGRyX3QgKnBoeXNfb2Zmc2V0KQoreworCXBoeXNfYWRkcl90IHRlc3RfY2FwLCBwX2FkZHI7CisJcGh5c19zaXplX3QgcF9zaXplID0gbWluKGdkLT5yYW1fc2l6ZSwgQ09ORklHX01BWF9NRU1fTUFQUEVEKTsKKworI2lmICFkZWZpbmVkKENPTkZJR19QSFlTXzY0QklUKSB8fCBcCisgICAgIWRlZmluZWQoQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVMpIHx8IFwKKwkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVMgPCAweDEwMDAwMDAwMHVsbCkKKwkJdGVzdF9jYXAgPSBwX3NpemU7CisjZWxzZQorCQl0ZXN0X2NhcCA9IGdkLT5yYW1fc2l6ZTsKKyNlbmRpZgorCXBfYWRkciA9ICgqdnN0YXJ0KSArICgqc2l6ZSkgKyAoKnBoeXNfb2Zmc2V0KTsKKwlpZiAocF9hZGRyIDwgdGVzdF9jYXAgLSAxKSB7CisJCXBfc2l6ZSA9IG1pbih0ZXN0X2NhcCAtIHBfYWRkciwgQ09ORklHX01BWF9NRU1fTUFQUEVEKTsKKwkJaWYgKHJlc2V0X3RsYihwX2FkZHIsIHBfc2l6ZSwgcGh5c19vZmZzZXQpID09IC0xKQorCQkJcmV0dXJuIC0xOworCQkqdnN0YXJ0ID0gQ09ORklHX1NZU19ERFJfU0RSQU1fQkFTRTsKKwkJKnNpemUgPSAodTMyKSBwX3NpemU7CisJCXByaW50ZigiVGVzdGluZyAweCUwOGxseCAtIDB4JTA4bGx4XG4iLAorCQkJKHU2NCkoKnZzdGFydCkgKyAoKnBoeXNfb2Zmc2V0KSwKKwkJCSh1NjQpKCp2c3RhcnQpICsgKCpwaHlzX29mZnNldCkgKyAoKnNpemUpIC0gMSk7CisJfSBlbHNlCisJCXJldHVybiAxOworCisJcmV0dXJuIDA7Cit9CisKKy8qIGluaXRpYWxpemF0aW9uIGZvciB0ZXN0aW5nIGFyZWEgKi8KK2ludCBhcmNoX21lbW9yeV90ZXN0X3ByZXBhcmUodTMyICp2c3RhcnQsIHUzMiAqc2l6ZSwgcGh5c19hZGRyX3QgKnBoeXNfb2Zmc2V0KQoreworCXBoeXNfc2l6ZV90IHBfc2l6ZSA9IG1pbihnZC0+cmFtX3NpemUsIENPTkZJR19NQVhfTUVNX01BUFBFRCk7CisKKwkqdnN0YXJ0ID0gQ09ORklHX1NZU19ERFJfU0RSQU1fQkFTRTsKKwkqc2l6ZSA9ICh1MzIpIHBfc2l6ZTsJLyogQ09ORklHX01BWF9NRU1fTUFQUEVEIDwgNEcgKi8KKwkqcGh5c19vZmZzZXQgPSAwOworCisjaWYgIWRlZmluZWQoQ09ORklHX1BIWVNfNjRCSVQpIHx8IFwKKyAgICAhZGVmaW5lZChDT05GSUdfU1lTX0lOSVRfUkFNX0FERFJfUEhZUykgfHwgXAorCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFJfUEhZUyA8IDB4MTAwMDAwMDAwdWxsKQorCQlpZiAoZ2QtPnJhbV9zaXplID4gQ09ORklHX01BWF9NRU1fTUFQUEVEKSB7CisJCQlwdXRzKCJDYW5ub3QgdGVzdCBtb3JlIHRoYW4gIik7CisJCQlwcmludF9zaXplKENPTkZJR19NQVhfTUVNX01BUFBFRCwKKwkJCQkiIHdpdGhvdXQgcHJvcGVyIDM2QklUIHN1cHBvcnQuXG4iKTsKKwkJfQorI2VuZGlmCisJcHJpbnRmKCJUZXN0aW5nIDB4JTA4bGx4IC0gMHglMDhsbHhcbiIsCisJCSh1NjQpKCp2c3RhcnQpICsgKCpwaHlzX29mZnNldCksCisJCSh1NjQpKCp2c3RhcnQpICsgKCpwaHlzX29mZnNldCkgKyAoKnNpemUpIC0gMSk7CisKKwlyZXR1cm4gMDsKK30KKworLyogaW52YWxpZCBUTEJzIGZvciBERFIgYW5kIHJlbWFwIGFzIG5vcm1hbCBhZnRlciB0ZXN0aW5nICovCitpbnQgYXJjaF9tZW1vcnlfdGVzdF9jbGVhbnVwKHUzMiAqdnN0YXJ0LCB1MzIgKnNpemUsIHBoeXNfYWRkcl90ICpwaHlzX29mZnNldCkKK3sKKwl1bnNpZ25lZCBsb25nIGVwbjsKKwl1MzIgdHNpemUsIHZhbGlkLCBwdHI7CisJcGh5c19hZGRyX3QgcnBuID0gMDsKKwlpbnQgZGRyX2VzZWw7CisKKwkvKiBkaXNhYmxlIHRoZSBUTEJzIGZvciB0aGlzIHRlc3RpbmcgKi8KKwlwdHIgPSAqdnN0YXJ0OworCisJd2hpbGUgKHB0ciA8ICgqdnN0YXJ0KSArICgqc2l6ZSkpIHsKKwkJZGRyX2VzZWwgPSBmaW5kX3RsYl9pZHgoKHZvaWQgKilwdHIsIDEpOworCQlpZiAoZGRyX2VzZWwgIT0gLTEpIHsKKwkJCXJlYWRfdGxiY2FtX2VudHJ5KGRkcl9lc2VsLCAmdmFsaWQsICZ0c2l6ZSwgJmVwbiwgJnJwbik7CisJCQlkaXNhYmxlX3RsYihkZHJfZXNlbCk7CisJCX0KKwkJcHRyICs9IFRTSVpFX1RPX0JZVEVTKHRzaXplKTsKKwl9CisKKwlwdXRzKCJSZW1hcCBERFIgIik7CisJc2V0dXBfZGRyX3RsYnMoZ2QtPnJhbV9zaXplPj4yMCk7CisJcHV0cygiXG4iKTsKKworCXJldHVybiAwOworfQorCit2b2lkIGFyY2hfbWVtb3J5X2ZhaWx1cmVfaGFuZGxlKHZvaWQpCit7CisJZHVtcF9zcGRfZGRyX3JlZygpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvZmR0LmMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvZmR0LmMKaW5kZXggNDU0MDM2NC4uNTNlMDU5NiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2ZkdC5jCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9mZHQuYwpAQCAtNDgsNiArNDgsNyBAQAogCXVsb25nIHNwaW5fdGJsX2FkZHIgPSBnZXRfc3Bpbl9waHlzX2FkZHIoKTsKIAl1MzIgYm9vdHBnID0gZGV0ZXJtaW5lX21wX2Jvb3RwZygpOwogCXUzMiBpZCA9IGdldF9teV9pZCgpOworCWNvbnN0IGNoYXIgKmVuYWJsZV9tZXRob2Q7CiAKIAlvZmYgPSBmZHRfbm9kZV9vZmZzZXRfYnlfcHJvcF92YWx1ZShibG9iLCAtMSwgImRldmljZV90eXBlIiwgImNwdSIsIDQpOwogCXdoaWxlIChvZmYgIT0gLUZEVF9FUlJfTk9URk9VTkQpIHsKQEAgLTYzLDEwICs2NCwyNSBAQAogCQkJCWZkdF9zZXRwcm9wX3N0cmluZyhibG9iLCBvZmYsICJzdGF0dXMiLAogCQkJCQkJCQkiZGlzYWJsZWQiKTsKIAkJCX0KKworCQkJaWYgKGhvbGRfY29yZXNfaW5fcmVzZXQoMCkpIHsKKyNpZmRlZiBDT05GSUdfRlNMX0NPUkVORVQKKwkJCQkvKiBDb3JlcyBoZWxkIGluIHJlc2V0LCB1c2UgQlJSIHRvIHJlbGVhc2UgKi8KKwkJCQllbmFibGVfbWV0aG9kID0gImZzbCxicnItaG9sZG9mZiI7CisjZWxzZQorCQkJCS8qIENvcmVzIGhlbGQgaW4gcmVzZXQsIHVzZSBFRUJQQ1IgdG8gcmVsZWFzZSAqLworCQkJCWVuYWJsZV9tZXRob2QgPSAiZnNsLGVlYnBjci1ob2xkb2ZmIjsKKyNlbmRpZgorCQkJfSBlbHNlIHsKKwkJCQkvKiBDb3JlcyBvdXQgb2YgcmVzZXQgYW5kIGluIGEgc3Bpbi1sb29wICovCisJCQkJZW5hYmxlX21ldGhvZCA9ICJzcGluLXRhYmxlIjsKKworCQkJCWZkdF9zZXRwcm9wKGJsb2IsIG9mZiwgImNwdS1yZWxlYXNlLWFkZHIiLAorCQkJCQkJJnZhbCwgc2l6ZW9mKHZhbCkpOworCQkJfQorCiAJCQlmZHRfc2V0cHJvcF9zdHJpbmcoYmxvYiwgb2ZmLCAiZW5hYmxlLW1ldGhvZCIsCi0JCQkJCQkJInNwaW4tdGFibGUiKTsKLQkJCWZkdF9zZXRwcm9wKGJsb2IsIG9mZiwgImNwdS1yZWxlYXNlLWFkZHIiLAotCQkJCQkmdmFsLCBzaXplb2YodmFsKSk7CisJCQkJCQkJZW5hYmxlX21ldGhvZCk7CiAJCX0gZWxzZSB7CiAJCQlwcmludGYgKCJjcHUgTlVMTFxuIik7CiAJCX0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9tcC5jIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L21wLmMKaW5kZXggNjAzYmFlZi4uYTAxOWIxYiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L21wLmMKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L21wLmMKQEAgLTM2LDYgKzM2LDI3IEBACiAJcmV0dXJuIG1mc3ByKFNQUk5fUElSKTsKIH0KIAorLyoKKyAqIERldGVybWluZSBpZiBVLUJvb3Qgc2hvdWxkIGtlZXAgc2Vjb25kYXJ5IGNvcmVzIGluIHJlc2V0LCBvciBsZXQgdGhlbSBvdXQKKyAqIG9mIHJlc2V0IGFuZCBob2xkIHRoZW0gaW4gYSBzcGlubG9vcAorICovCitpbnQgaG9sZF9jb3Jlc19pbl9yZXNldChpbnQgdmVyYm9zZSkKK3sKKwljb25zdCBjaGFyICpzID0gZ2V0ZW52KCJtcF9ob2xkb2ZmIik7CisKKwkvKiBEZWZhdWx0IHRvIG5vLCBvdmVycmlkZW4gYnkgJ3knLCAneWVzJywgJ1knLCAnWWVzJywgb3IgJzEnICovCisJaWYgKHMgJiYgKCpzID09ICd5JyB8fCAqcyA9PSAnWScgfHwgKnMgPT0gJzEnKSkgeworCQlpZiAodmVyYm9zZSkgeworCQkJcHV0cygiU2Vjb25kYXJ5IGNvcmVzIGFyZSBiZWluZyBoZWxkIGluIHJlc2V0LlxuIik7CisJCQlwdXRzKCJTZWUgJ21wX2hvbGRvZmYnIGVudmlyb25tZW50IHZhcmlhYmxlXG4iKTsKKwkJfQorCisJCXJldHVybiAxOworCX0KKworCXJldHVybiAwOworfQorCiBpbnQgY3B1X3Jlc2V0KGludCBucikKIHsKIAl2b2xhdGlsZSBjY3NyX3BpY190ICpwaWMgPSAodm9pZCAqKShDT05GSUdfU1lTX01QQzh4eHhfUElDX0FERFIpOwpAQCAtNTEsNiArNzIsOSBAQAogewogCXUzMiAqdGFibGUsIGlkID0gZ2V0X215X2lkKCk7CiAKKwlpZiAoaG9sZF9jb3Jlc19pbl9yZXNldCgxKSkKKwkJcmV0dXJuIDA7CisKIAlpZiAobnIgPT0gaWQpIHsKIAkJdGFibGUgPSAodTMyICopZ2V0X3NwaW5fdmlydF9hZGRyKCk7CiAJCXByaW50ZigidGFibGUgYmFzZSBAIDB4JXBcbiIsIHRhYmxlKTsKQEAgLTEzMyw2ICsxNTcsOSBAQAogCXUzMiBpLCB2YWwsICp0YWJsZSA9ICh1MzIgKilnZXRfc3Bpbl92aXJ0X2FkZHIoKSArIG5yICogTlVNX0JPT1RfRU5UUlk7CiAJdTY0IGJvb3RfYWRkcjsKIAorCWlmIChob2xkX2NvcmVzX2luX3Jlc2V0KDEpKQorCQlyZXR1cm4gMDsKKwogCWlmIChuciA9PSBnZXRfbXlfaWQoKSkgewogCQlwcmludGYoIkludmFsaWQgdG8gcmVsZWFzZSB0aGUgYm9vdCBjb3JlLlxuXG4iKTsKIAkJcmV0dXJuIDE7CkBAIC0zNTMsNiArMzgwLDEwIEBACiAJdWxvbmcgZml4dXAgPSAodWxvbmcpJl9fc2Vjb25kYXJ5X3N0YXJ0X3BhZ2U7CiAJdTMyIGJvb3RwZyA9IGRldGVybWluZV9tcF9ib290cGcoKTsKIAorCS8qIFNvbWUgT1NlcyBleHBlY3Qgc2Vjb25kYXJ5IGNvcmVzIHRvIGJlIGhlbGQgaW4gcmVzZXQgKi8KKwlpZiAoaG9sZF9jb3Jlc19pbl9yZXNldCgwKSkKKwkJcmV0dXJuOworCiAJLyogU3RvcmUgdGhlIGJvb3RwZydzIFNEUkFNIGFkZHJlc3MgZm9yIHVzZSBieSBzZWNvbmRhcnkgQ1BVIGNvcmVzICovCiAJX19ib290cGdfYWRkciA9IGJvb3RwZzsKIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L21wLmggYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvbXAuaAppbmRleCAzNDIyY2MxLi44N2JhYzM3IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvbXAuaAorKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvbXAuaApAQCAtNiw2ICs2LDcgQEAKIHVsb25nIGdldF9zcGluX3BoeXNfYWRkcih2b2lkKTsKIHVsb25nIGdldF9zcGluX3ZpcnRfYWRkcih2b2lkKTsKIHUzMiBnZXRfbXlfaWQodm9pZCk7CitpbnQgaG9sZF9jb3Jlc19pbl9yZXNldChpbnQgdmVyYm9zZSk7CiAKICNkZWZpbmUgQk9PVF9FTlRSWV9BRERSX1VQUEVSCTAKICNkZWZpbmUgQk9PVF9FTlRSWV9BRERSX0xPV0VSCTEKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9yZWxlYXNlLlMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvcmVsZWFzZS5TCmluZGV4IDUzY2VmYWYuLjU2YTg1M2UgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9yZWxlYXNlLlMKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L3JlbGVhc2UuUwpAQCAtMjEsNiArMjEsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxtcGM4NXh4Lmg+CiAjaW5jbHVkZSA8dmVyc2lvbi5oPgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L3N0YXJ0LlMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvc3RhcnQuUwppbmRleCA3ZTVlNmIxLi4yOTE1NTdkIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvc3RhcnQuUworKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvc3RhcnQuUwpAQCAtMjgsNiArMjgsNyBAQAogICoKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxtcGM4NXh4Lmg+CiAjaW5jbHVkZSA8dGltZXN0YW1wLmg+CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvdGxiLmMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvdGxiLmMKaW5kZXggZjI4MzNhNS4uZTNhNzFhZSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L3RsYi5jCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC90bGIuYwpAQCAtMjQ1LDcgKzI0NSw4IEBACiB9CiAjZW5kaWYKIAotdW5zaWduZWQgaW50IHNldHVwX2Rkcl90bGJzKHVuc2lnbmVkIGludCBtZW1zaXplX2luX21lZykKK3Vuc2lnbmVkIGludAorc2V0dXBfZGRyX3RsYnNfcGh5cyhwaHlzX2FkZHJfdCBwX2FkZHIsIHVuc2lnbmVkIGludCBtZW1zaXplX2luX21lZykKIHsKIAlpbnQgaTsKIAl1bnNpZ25lZCBpbnQgdGxiX3NpemU7CkBAIC0yNzUsMjEgKzI3NiwyNCBAQAogCiAJCXRsYl9zaXplID0gKGNhbXNpemUgLSAxMCkgLyAyOwogCi0JCXNldF90bGIoMSwgcmFtX3RsYl9hZGRyZXNzLCByYW1fdGxiX2FkZHJlc3MsCisJCXNldF90bGIoMSwgcmFtX3RsYl9hZGRyZXNzLCBwX2FkZHIsCiAJCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgMCwKIAkJCTAsIHJhbV90bGJfaW5kZXgsIHRsYl9zaXplLCAxKTsKIAogCQlzaXplIC09IDFVTEwgPDwgY2Ftc2l6ZTsKIAkJbWVtc2l6ZSAtPSAxVUxMIDw8IGNhbXNpemU7CiAJCXJhbV90bGJfYWRkcmVzcyArPSAxVUwgPDwgY2Ftc2l6ZTsKKwkJcF9hZGRyICs9IDFVTCA8PCBjYW1zaXplOwogCX0KIAogCWlmIChtZW1zaXplKQogCQlwcmludF9zaXplKG1lbXNpemUsICIgbGVmdCB1bm1hcHBlZFxuIik7Ci0KLQkvKgotCSAqIENvbmZpcm0gdGhhdCB0aGUgcmVxdWVzdGVkIGFtb3VudCBvZiBtZW1vcnkgd2FzIG1hcHBlZC4KLQkgKi8KIAlyZXR1cm4gbWVtc2l6ZV9pbl9tZWc7CiB9CisKK3Vuc2lnbmVkIGludCBzZXR1cF9kZHJfdGxicyh1bnNpZ25lZCBpbnQgbWVtc2l6ZV9pbl9tZWcpCit7CisJcmV0dXJuCisJCXNldHVwX2Rkcl90bGJzX3BoeXMoQ09ORklHX1NZU19ERFJfU0RSQU1fQkFTRSwgbWVtc2l6ZV9pbl9tZWcpOworfQogI2VuZGlmIC8qICFDT05GSUdfTkFORF9TUEwgKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC91LWJvb3QubGRzIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L3UtYm9vdC5sZHMKaW5kZXggYzg4YjFmMy4uODUwNDJjNSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L3UtYm9vdC5sZHMKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L3UtYm9vdC5sZHMKQEAgLTI1LDggKzI1LDcgQEAKICNlbmRpZgogCiBPVVRQVVRfQVJDSChwb3dlcnBjKQotLyogRG8gd2UgbmVlZCBhbnkgb2YgdGhlc2UgZm9yIGVsZj8KLSAgIF9fRFlOQU1JQyA9IDA7ICAgICovCisKIFBIRFJTCiB7CiAgIHRleHQgUFRfTE9BRDsKQEAgLTM4LDQyICszNywxNiBAQAogICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAgLiA9ICsgU0laRU9GX0hFQURFUlM7CiAgIC5pbnRlcnAgOiB7ICooLmludGVycCkgfQotICAuaGFzaCAgICAgICAgICA6IHsgKiguaGFzaCkJCX0KLSAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KLSAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KLSAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9Ci0gIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KLSAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9Ci0gIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KLSAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQotICAucmVsYS5jdG9ycyAgICA6IHsgKigucmVsYS5jdG9ycykJfQotICAucmVsLmR0b3JzICAgICA6IHsgKigucmVsLmR0b3JzKQl9Ci0gIC5yZWxhLmR0b3JzICAgIDogeyAqKC5yZWxhLmR0b3JzKQl9Ci0gIC5yZWwuYnNzICAgICAgIDogeyAqKC5yZWwuYnNzKQkJfQotICAucmVsYS5ic3MgICAgICA6IHsgKigucmVsYS5ic3MpCQl9Ci0gIC5yZWwucGx0ICAgICAgIDogeyAqKC5yZWwucGx0KQkJfQotICAucmVsYS5wbHQgICAgICA6IHsgKigucmVsYS5wbHQpCQl9Ci0gIC5pbml0ICAgICAgICAgIDogeyAqKC5pbml0KQl9Ci0gIC5wbHQgOiB7ICooLnBsdCkgfQogICAudGV4dCAgICAgIDoKICAgewotICAgICooLnRleHQpCi0gICAgKiguZ290MSkKKyAgICAqKC50ZXh0KikKICAgIH0gOnRleHQKICAgICBfZXRleHQgPSAuOwogICAgIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgICAgLnJvZGF0YSAgICA6CiAgICB7Ci0gICAgKiguZWhfZnJhbWUpCiAgICAgKihTT1JUX0JZX0FMSUdOTUVOVChTT1JUX0JZX05BTUUoLnJvZGF0YSopKSkKICAgfSA6dGV4dAotICAuZmluaSAgICAgIDogeyAqKC5maW5pKSAgICB9ID0wCi0gIC5jdG9ycyAgICAgOiB7ICooLmN0b3JzKSAgIH0KLSAgLmR0b3JzICAgICA6IHsgKiguZHRvcnMpICAgfQogCiAgIC8qIFJlYWQtd3JpdGUgc2VjdGlvbiwgbWVyZ2VkIGludG8gZGF0YSBzZWdtZW50OiAqLwogICAuID0gKC4gKyAweDAwRkYpICYgMHhGRkZGRkYwMDsKQEAgLTgxLDIzICs1NCwxOSBAQAogICBQUk9WSURFIChlcm90ZXh0ID0gLik7CiAgIC5yZWxvYyAgIDoKICAgewotICAgICooLmdvdCkKKyAgICBLRUVQKCooLmdvdCkpCiAgICAgX0dPVDJfVEFCTEVfID0gLjsKLSAgICAqKC5nb3QyKQorICAgIEtFRVAoKiguZ290MikpCiAgICAgX0ZJWFVQX1RBQkxFXyA9IC47Ci0gICAgKiguZml4dXApCisgICAgS0VFUCgqKC5maXh1cCkpCiAgIH0KICAgX19nb3QyX2VudHJpZXMgPSAoX0ZJWFVQX1RBQkxFXyAtIF9HT1QyX1RBQkxFXykgPj4gMjsKICAgX19maXh1cF9lbnRyaWVzID0gKC4gLSBfRklYVVBfVEFCTEVfKSA+PiAyOwogCiAgIC5kYXRhICAgIDoKICAgewotICAgICooLmRhdGEpCi0gICAgKiguZGF0YTEpCi0gICAgKiguc2RhdGEpCi0gICAgKiguc2RhdGEyKQotICAgICooLmR5bmFtaWMpCi0gICAgQ09OU1RSVUNUT1JTCisgICAgKiguZGF0YSopCisgICAgKiguc2RhdGEqKQogICB9CiAgIF9lZGF0YSAgPSAgLjsKICAgUFJPVklERSAoZWRhdGEgPSAuKTsKQEAgLTEyNiw3ICs5NSw3IEBACiAKICAgLnJlc2V0dmVjIFJFU0VUX1ZFQ1RPUl9BRERSRVNTIDoKICAgewotICAgICooLnJlc2V0dmVjKQorICAgIEtFRVAoKigucmVzZXR2ZWMpKQogICB9IDp0ZXh0ID0gMHhmZmZmCiAKICAgLiA9IFJFU0VUX1ZFQ1RPUl9BRERSRVNTICsgMHg0OwpAQCAtMTQ1LDkgKzExNCw4IEBACiAgIF9fYnNzX3N0YXJ0ID0gLjsKICAgLmJzcyAoTk9MT0FEKSAgICAgICA6CiAgIHsKLSAgICooLnNic3MpICooLnNjb21tb24pCi0gICAqKC5keW5ic3MpCi0gICAqKC5ic3MpCisgICAqKC5zYnNzKikKKyAgICooLmJzcyopCiAgICAqKENPTU1PTikKICAgfSA6YnNzCiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODZ4eC9jb25maWcubWsgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvY29uZmlnLm1rCmluZGV4IGNhMmY4MzcuLmJjZTBmYjMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODZ4eC9jb25maWcubWsKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4Nnh4L2NvbmZpZy5tawpAQCAtMjUsMyArMjUsMTAgQEAKIAogUExBVEZPUk1fQ1BQRkxBR1MgKz0gLWZmaXhlZC1yMiAtbXN0cmluZwogUExBVEZPUk1fQ1BQRkxBR1MgKz0gLW1hbHRpdmVjIC1tYWJpPWFsdGl2ZWMgLW1zb2Z0LWZsb2F0CisKKyMgRW5hYmxlIGdjLXNlY3Rpb25zIHRvIGVuYWJsZSBnZW5lcmF0aW9uIG9mIHNtYWxsZXIgaW1hZ2VzLgorUExBVEZPUk1fTERGTEFHUyArPSAtLWdjLXNlY3Rpb25zCitQTEFURk9STV9SRUxGTEFHUyArPSAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucworCisjIFVzZSBkZWZhdWx0IGxpbmtlciBzY3JpcHQuICBCb2FyZCBwb3J0IGNhbiBvdmVycmlkZSBpbiBib2FyZC8qL2NvbmZpZy5taworTERTQ1JJUFQgOj0gJChTUkNUUkVFKS9hcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvdS1ib290LmxkcwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4Nnh4L3N0YXJ0LlMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvc3RhcnQuUwppbmRleCAzODE3ZjE5Li42MTI3MTE1IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvc3RhcnQuUworKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvc3RhcnQuUwpAQCAtMzAsNiArMzAsNyBAQAogICogIGJvYXJkX2luaXQgbGllcyBhdCBhIHF1aXRlIGhpZ2ggYWRkcmVzcyBhbmQgd2hlbiB0aGUgY3B1IGhhcwogICogIGp1bXBlZCB0aGVyZSwgZXZlcnl0aGluZyBpcyBvay4KICAqLworI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8bXBjODZ4eC5oPgogI2luY2x1ZGUgPHRpbWVzdGFtcC5oPgpAQCAtODcwLDcgKzg3MSw3IEBACiAJICovCiAJbGlzCXIzLCAoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICYgfjMxKUBoCiAJb3JpCXIzLCByMywgKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAmIH4zMSlAbAotCWxpCXI0LCAoKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EICYgfjMxKSArIFwKKwlsaQlyNCwgKChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgJiB+MzEpICsgXAogCQkgICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgJiAzMSkgKyAzMSkgLyAzMgogCW10Y3RyCXI0CiAxOgpAQCAtOTA1LDcgKzkwNiw3IEBACiAJLyogaW52YWxpZGF0ZSB0aGUgSU5JVF9SQU0gc2VjdGlvbiAqLwogCWxpcwlyMywgKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAmIH4zMSlAaAogCW9yaQlyMywgcjMsIChDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgJiB+MzEpQGwKLQlsaQlyNCwgKChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAmIH4zMSkgKyBcCisJbGkJcjQsICgoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICYgfjMxKSArIFwKIAkJICAgICAoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICYgMzEpICsgMzEpIC8gMzIKIAltdGN0cglyNAogMToJaWNiaQlyMCwgcjMKZGlmZiAtLWdpdCBhL2JvYXJkL3NiYzg2NDFkL3UtYm9vdC5sZHMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvdS1ib290LmxkcwpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBib2FyZC9zYmM4NjQxZC91LWJvb3QubGRzCnJlbmFtZSB0byBhcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvdS1ib290LmxkcwppbmRleCA0Y2VhM2IzLi40YmZjYjkwIDEwMDY0NAotLS0gYS9ib2FyZC9zYmM4NjQxZC91LWJvb3QubGRzCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODZ4eC91LWJvb3QubGRzCkBAIC02MCwxOSArNjAsMTQgQEAKICAgICBsaWIvY3JjMzIubyAoLnRleHQpCiAgICAgYXJjaC9wb3dlcnBjL2xpYi9leHRhYmxlLm8gKC50ZXh0KQogICAgIGxpYi96bGliLm8gKC50ZXh0KQotICAgICooLnRleHQpCi0gICAgKiguZ290MSkKKyAgICAqKC50ZXh0KikKICAgIH0KICAgICBfZXRleHQgPSAuOwogICAgIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgICAgLnJvZGF0YSAgICA6CiAgICB7Ci0gICAgKiguZWhfZnJhbWUpCiAgICAgKihTT1JUX0JZX0FMSUdOTUVOVChTT1JUX0JZX05BTUUoLnJvZGF0YSopKSkKICAgfQotICAuZmluaSAgICAgIDogeyAqKC5maW5pKSAgICB9ID0wCi0gIC5jdG9ycyAgICAgOiB7ICooLmN0b3JzKSAgIH0KLSAgLmR0b3JzICAgICA6IHsgKiguZHRvcnMpICAgfQogCiAgIC8qIFJlYWQtd3JpdGUgc2VjdGlvbiwgbWVyZ2VkIGludG8gZGF0YSBzZWdtZW50OiAqLwogICAuID0gKC4gKyAweDAwRkYpICYgMHhGRkZGRkYwMDsKQEAgLTgwLDIzICs3NSwxOSBAQAogICBQUk9WSURFIChlcm90ZXh0ID0gLik7CiAgIC5yZWxvYyAgIDoKICAgewotICAgICooLmdvdCkKKyAgICBLRUVQKCooLmdvdCkpCiAgICAgX0dPVDJfVEFCTEVfID0gLjsKLSAgICAqKC5nb3QyKQorICAgIEtFRVAoKiguZ290MikpCiAgICAgX0ZJWFVQX1RBQkxFXyA9IC47Ci0gICAgKiguZml4dXApCisgICAgS0VFUCgqKC5maXh1cCkpCiAgIH0KICAgX19nb3QyX2VudHJpZXMgPSAoX0ZJWFVQX1RBQkxFXyAtIF9HT1QyX1RBQkxFXykgPj4gMjsKICAgX19maXh1cF9lbnRyaWVzID0gKC4gLSBfRklYVVBfVEFCTEVfKSA+PiAyOwogCiAgIC5kYXRhICAgIDoKICAgewotICAgICooLmRhdGEpCi0gICAgKiguZGF0YTEpCi0gICAgKiguc2RhdGEpCi0gICAgKiguc2RhdGEyKQotICAgICooLmR5bmFtaWMpCi0gICAgQ09OU1RSVUNUT1JTCisgICAgKiguZGF0YSopCisgICAgKiguc2RhdGEqKQogICB9CiAgIF9lZGF0YSAgPSAgLjsKICAgUFJPVklERSAoZWRhdGEgPSAuKTsKQEAgLTEyMSw5ICsxMTIsOCBAQAogICBfX2Jzc19zdGFydCA9IC47CiAgIC5ic3MgKE5PTE9BRCkgICAgICAgOgogICB7Ci0gICAqKC5zYnNzKSAqKC5zY29tbW9uKQotICAgKiguZHluYnNzKQotICAgKiguYnNzKQorICAgKiguc2JzcyopCisgICAqKC5ic3MqKQogICAgKihDT01NT04pCiAgICAuID0gQUxJR04oNCk7CiAgIH0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4L3N0YXJ0LlMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eC9zdGFydC5TCmluZGV4IDRhOGM1ZDkuLjlkMDIyYmYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4L3N0YXJ0LlMKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHgvc3RhcnQuUwpAQCAtMzcsNiArMzcsNyBAQAogICogIGJvYXJkX2luaXQgd2lsbCBjaGFuZ2UgQ1MwIHRvIGJlIHBvc2l0aW9uZWQgYXQgdGhlIGNvcnJlY3QKICAqICBhZGRyZXNzIGFuZCAocylkcmFtIHdpbGwgYmUgcG9zaXRpb25lZCBhdCBhZGRyZXNzIDAKICAqLworI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8bXBjOHh4Lmg+CiAjaW5jbHVkZSA8dGltZXN0YW1wLmg+CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvZGRyL2N0cmxfcmVncy5jIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHh4L2Rkci9jdHJsX3JlZ3MuYwppbmRleCBlODIwODJlLi4zZmVjMTAwIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvZGRyL2N0cmxfcmVncy5jCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvY3RybF9yZWdzLmMKQEAgLTExODQsNiArMTE4NCw3IEBACiAJdW5zaWduZWQgaW50IHNyX2l0OwogCXVuc2lnbmVkIGludCB6cV9lbjsKIAl1bnNpZ25lZCBpbnQgd3JsdmxfZW47CisJaW50IGNzX2VuID0gMTsKIAogCW1lbXNldChkZHIsIDAsIHNpemVvZihmc2xfZGRyX2NmZ19yZWdzX3QpKTsKIApAQCAtMTI1MCwxNiArMTI1MSwyMyBAQAogCQkJICogYW5kIGVhY2ggY29udHJvbGxlciB1c2VzIHJhbmsgaW50ZXJsZWF2aW5nIHdpdGhpbgogCQkJICogaXRzZWxmLiBUaGVyZWZvcmUgdGhlIHN0YXJ0aW5nIGFuZCBlbmRpbmcgYWRkcmVzcwogCQkJICogb24gZWFjaCBjb250cm9sbGVyIGlzIHR3aWNlIHRoZSBhbW91bnQgcHJlc2VudCBvbgotCQkJICogZWFjaCBjb250cm9sbGVyLgorCQkJICogZWFjaCBjb250cm9sbGVyLiBJZiBhbnkgQ1MgaXMgbm90IGluY2x1ZGVkIGluIHRoZQorCQkJICogaW50ZXJsZWF2aW5nLCB0aGUgbWVtb3J5IG9uIHRoYXQgQ1MgaXMgbm90IGFjY3NzaWJsZQorCQkJICogYW5kIHRoZSB0b3RhbCBtZW1vcnkgc2l6ZSBpcyByZWR1Y2VkLiBUaGUgQ1MgaXMgYWxzbworCQkJICogZGlzYWJsZWQuCiAJCQkgKi8KIAkJCXVuc2lnbmVkIGxvbmcgbG9uZyBjdGxyX2RlbnNpdHkgPSAwOwogCQkJc3dpdGNoIChwb3B0cy0+YmFfaW50bHZfY3RsICYgRlNMX0REUl9DUzBfQ1MxX0NTMl9DUzMpIHsKIAkJCWNhc2UgRlNMX0REUl9DUzBfQ1MxOgogCQkJY2FzZSBGU0xfRERSX0NTMF9DUzFfQU5EX0NTMl9DUzM6CiAJCQkJY3Rscl9kZW5zaXR5ID0gZGltbV9wYXJhbXNbMF0ucmFua19kZW5zaXR5ICogMjsKKwkJCQlpZiAoaSA+IDEpCisJCQkJCWNzX2VuID0gMDsKIAkJCQlicmVhazsKIAkJCWNhc2UgRlNMX0REUl9DUzJfQ1MzOgogCQkJCWN0bHJfZGVuc2l0eSA9IGRpbW1fcGFyYW1zWzBdLnJhbmtfZGVuc2l0eTsKKwkJCQlpZiAoaSA+IDApCisJCQkJCWNzX2VuID0gMDsKIAkJCQlicmVhazsKIAkJCWNhc2UgRlNMX0REUl9DUzBfQ1MxX0NTMl9DUzM6CiAJCQkJLyoKQEAgLTEzNzksOCArMTM4NywxMSBAQAogCQkJKTsKIAogCQlkZWJ1ZygiRlNMRERSOiBjc1slZF1fYm5kcyA9IDB4JTA4eFxuIiwgaSwgZGRyLT5jc1tpXS5ibmRzKTsKLQkJc2V0X2Nzbl9jb25maWcoZGltbV9udW1iZXIsIGksIGRkciwgcG9wdHMsIGRpbW1fcGFyYW1zKTsKLQkJc2V0X2Nzbl9jb25maWdfMihpLCBkZHIpOworCQlpZiAoY3NfZW4pIHsKKwkJCXNldF9jc25fY29uZmlnKGRpbW1fbnVtYmVyLCBpLCBkZHIsIHBvcHRzLCBkaW1tX3BhcmFtcyk7CisJCQlzZXRfY3NuX2NvbmZpZ18yKGksIGRkcik7CisJCX0gZWxzZQorCQkJcHJpbnRmKCJDUyVkIGlzIGRpc2FibGVkLlxuIiwgaSk7CiAJfQogCiAJc2V0X2Rkcl9lb3IoZGRyLCBwb3B0cyk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvZmR0LmMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvZmR0LmMKaW5kZXggODhjNDdkMS4uNTRlNjBiYiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHh4L2ZkdC5jCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9mZHQuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPGxpYmZkdC5oPgogI2luY2x1ZGUgPGZkdF9zdXBwb3J0Lmg+CiAjaW5jbHVkZSA8YXNtL21wLmg+CisjaW5jbHVkZSA8YXNtL2ZzbF9lbmV0Lmg+CiAKICNpZiBkZWZpbmVkKENPTkZJR19NUCkgJiYgKGRlZmluZWQoQ09ORklHX01QQzg1eHgpIHx8IGRlZmluZWQoQ09ORklHX01QQzg2eHgpKQogc3RhdGljIGludCBmdF9kZWxfY3B1aGFuZGxlKHZvaWQgKmJsb2IsIGludCBjcHVoYW5kbGUpCkBAIC0yMTUsMyArMjE2LDI2IEBACiAJCWZkdF9kZWxfbm9kZV9hbmRfYWxpYXMoYmxvYiwgImNyeXB0byIpOwogfQogI2VuZGlmCisKK2ludCBmZHRfZml4dXBfcGh5X2Nvbm5lY3Rpb24odm9pZCAqYmxvYiwgaW50IG9mZnNldCwgZW51bSBmc2xfcGh5X2VuZXRfaWYgcGh5YykKK3sKKwlzdGF0aWMgY29uc3QgY2hhciAqZnNsX3BoeV9lbmV0X2lmX3N0cltdID0geworCQlbTUlJXQkJPSAibWlpIiwKKwkJW1JNSUldCQk9ICJybWlpIiwKKwkJW0dNSUldCQk9ICJnbWlpIiwKKwkJW1JHTUlJXQkJPSAicmdtaWkiLAorCQlbUkdNSUlfSURdCT0gInJnbWlpLWlkIiwKKwkJW1JHTUlJX1JYSURdCT0gInJnbWlpLXJ4aWQiLAorCQlbU0dNSUldCQk9ICJzZ21paSIsCisJCVtUQkldCQk9ICJ0YmkiLAorCQlbUlRCSV0JCT0gInJ0YmkiLAorCQlbWEFVSV0JCT0gInhnbWlpIiwKKwkJW0ZTTF9FVEhfSUZfTk9ORV0gPSAiIiwKKwl9OworCisJaWYgKHBoeWMgPiBBUlJBWV9TSVpFKGZzbF9waHlfZW5ldF9pZl9zdHIpKQorCQlyZXR1cm4gZmR0X3NldHByb3Bfc3RyaW5nKGJsb2IsIG9mZnNldCwgInBoeS1jb25uZWN0aW9uLXR5cGUiLCAiIik7CisKKwlyZXR1cm4gZmR0X3NldHByb3Bfc3RyaW5nKGJsb2IsIG9mZnNldCwgInBoeS1jb25uZWN0aW9uLXR5cGUiLAorCQkJCQkgZnNsX3BoeV9lbmV0X2lmX3N0cltwaHljXSk7Cit9CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvcGNpX2NmZy5jIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHh4L3BjaV9jZmcuYwppbmRleCAxODY5MzZmLi41MzIzNmEzIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvcGNpX2NmZy5jCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9wY2lfY2ZnLmMKQEAgLTEzOCw3ICsxMzgsMTAgQEAKIHsKIAlbTEFXX1RSR1RfSUZfUENJRV8xXSA9IHsKIAkJLmNmZyA9ICAgKDEgPDwgMikgfCAoMSA8PCAzKSB8ICgxIDw8IDUpIHwgKDEgPDwgNikgfAotCQkJICgxIDw8IDcpIHwgKDEgPDwgMHhlKSB8ICgxIDw8IDB4ZiksCisJCQkgKDEgPDwgNykgfCAoMSA8PCAweGYpLAorCX0sCisJW0xBV19UUkdUX0lGX1BDSUVfMl0gPSB7CisJCS5jZmcgPSAgICgxIDw8IDMpIHwgKDEgPDwgMHhlKSB8ICgxIDw8IDB4ZiksCiAJfSwKIH07CiAjZWxpZiBkZWZpbmVkKENPTkZJR19QMTAxMSkgfHwgZGVmaW5lZChDT05GSUdfUDEwMjApIHx8IFwKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvcHBjNHh4L2NwdV9pbml0LmMgYi9hcmNoL3Bvd2VycGMvY3B1L3BwYzR4eC9jcHVfaW5pdC5jCmluZGV4IDJhNzI3YjEuLmJmMjA4YWQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvcHBjNHh4L2NwdV9pbml0LmMKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9wcGM0eHgvY3B1X2luaXQuYwpAQCAtMzQyLDcgKzM0Miw3IEBACiAjZW5kaWYKIAogI2lmIGRlZmluZWQoQ09ORklHX1dBVENIRE9HKQotCXZhbCA9IG1mc3ByKHRjcik7CisJdmFsID0gbWZzcHIoU1BSTl9UQ1IpOwogI2lmIGRlZmluZWQoQ09ORklHXzQ0MEVQKSB8fCBkZWZpbmVkKENPTkZJR180NDBHUikKIAl2YWwgfD0gMHhiODAwMDAwMDsgICAgICAvKiBnZW5lcmF0ZSBzeXN0ZW0gcmVzZXQgYWZ0ZXIgMS4zNCBzZWNvbmRzICovCiAjZWxpZiBkZWZpbmVkKENPTkZJR180NDBFUFgpCkBAIC0zNTQsMTEgKzM1NCwxMSBAQAogCXZhbCAmPSB+MHgzMDAwMDAwMDsJCQkvKiBjbGVhciBXUkMgYml0cyAqLwogCXZhbCB8PSBDT05GSUdfU1lTXzR4eF9SRVNFVF9UWVBFIDw8IDI4OwkvKiBzZXQgYm9hcmQgc3BlY2lmaWMgV1JDIHR5cGUgKi8KICNlbmRpZgotCW10c3ByKHRjciwgdmFsKTsKKwltdHNwcihTUFJOX1RDUiwgdmFsKTsKIAotCXZhbCA9IG1mc3ByKHRzcik7CisJdmFsID0gbWZzcHIoU1BSTl9UU1IpOwogCXZhbCB8PSAweDgwMDAwMDAwOyAgICAgIC8qIGVuYWJsZSB3YXRjaGRvZyB0aW1lciAqLwotCW10c3ByKHRzciwgdmFsKTsKKwltdHNwcihTUFJOX1RTUiwgdmFsKTsKIAogCXJlc2V0XzR4eF93YXRjaGRvZygpOwogI2VuZGlmIC8qIENPTkZJR19XQVRDSERPRyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9wcGM0eHgvaW50ZXJydXB0cy5jIGIvYXJjaC9wb3dlcnBjL2NwdS9wcGM0eHgvaW50ZXJydXB0cy5jCmluZGV4IGMyZDQ5NzMuLmQwYmNhOTIgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvcHBjNHh4L2ludGVycnVwdHMuYworKysgYi9hcmNoL3Bvd2VycGMvY3B1L3BwYzR4eC9pbnRlcnJ1cHRzLmMKQEAgLTY3LDEzICs2Nyw2IEBACiAJYXNtIHZvbGF0aWxlKCJtdHBpdCAlMCIgOiA6ICJyIiAodmFsKSk7CiB9CiAKLQotc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfdGNyKHVuc2lnbmVkIGxvbmcgdmFsKQotewotCWFzbSB2b2xhdGlsZSgibXR0Y3IgJTAiIDogOiAiciIgKHZhbCkpOwotfQotCi0KIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2V2cHIodW5zaWduZWQgbG9uZyB2YWwpCiB7CiAJYXNtIHZvbGF0aWxlKCJtdGV2cHIgJTAiIDogOiAiciIgKHZhbCkpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9wcGM0eHgvc3RhcnQuUyBiL2FyY2gvcG93ZXJwYy9jcHUvcHBjNHh4L3N0YXJ0LlMKaW5kZXggODdjYWVhMS4uMzYzYmVjYyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9wcGM0eHgvc3RhcnQuUworKysgYi9hcmNoL3Bvd2VycGMvY3B1L3BwYzR4eC9zdGFydC5TCkBAIC02Myw2ICs2Myw3IEBACiAgKiAgYm9hcmRfaW5pdCB3aWxsIGNoYW5nZSBDUzAgdG8gYmUgcG9zaXRpb25lZCBhdCB0aGUgY29ycmVjdAogICogIGFkZHJlc3MgYW5kIChzKWRyYW0gd2lsbCBiZSBwb3NpdGlvbmVkIGF0IGFkZHJlc3MgMAogICovCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxhc20vcHBjNHh4Lmg+CiAjaW5jbHVkZSA8dGltZXN0YW1wLmg+CkBAIC0xODIsOCArMTgzLDggQEAKICMgZW5kaWYKICNlbmRpZiAvKiBDT05GSUdfU1lTX0lOSVRfRENBQ0hFX0NTICovCiAKLSNpZiAoZGVmaW5lZChDT05GSUdfU1lTX0lOSVRfUkFNX0RDQUNIRSkgJiYgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EID4gKDQgPDwgMTApKSkKLSNlcnJvciBPbmx5IDRrIG9mIGluaXQtcmFtIGlzIHN1cHBvcnRlZCAtIHBsZWFzZSBhZGp1c3QgQ09ORklHX1NZU19JTklUX1JBTV9FTkQhCisjaWYgKGRlZmluZWQoQ09ORklHX1NZU19JTklUX1JBTV9EQ0FDSEUpICYmIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgPiAoNCA8PCAxMCkpKQorI2Vycm9yIE9ubHkgNGsgb2YgaW5pdC1yYW0gaXMgc3VwcG9ydGVkIC0gcGxlYXNlIGFkanVzdCBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUhCiAjZW5kaWYKIAogLyoKQEAgLTY1Niw4ICs2NTcsOCBAQAogCS8qIENsZWFyIERjYWNoZSB0byB1c2UgYXMgUkFNICovCiAJYWRkaXMJcjMscjAsQ09ORklHX1NZU19JTklUX1JBTV9BRERSQGgKIAlvcmkJcjMscjMsQ09ORklHX1NZU19JTklUX1JBTV9BRERSQGwKLQlhZGRpcwlyNCxyMCxDT05GSUdfU1lTX0lOSVRfUkFNX0VOREBoCi0Jb3JpCXI0LHI0LENPTkZJR19TWVNfSU5JVF9SQU1fRU5EQGwKKwlhZGRpcwlyNCxyMCxDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkVAaAorCW9yaQlyNCxyNCxDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkVAbAogCXJsd2lubS4gcjUscjQsMCwyNywzMQogCXJsd2lubQlyNSxyNCwyNyw1LDMxCiAJYmVxCS4uZF9yYW4KQEAgLTEwOTEsOCArMTA5Miw4IEBACiAJbGlzCXIzLCBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFJAaAogCW9yaQlyMywgcjMsIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUkBsCiAKLQlsaXMJcjQsIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EQGgKLQlvcmkJcjQsIHI0LCBDT05GSUdfU1lTX0lOSVRfUkFNX0VOREBsCisJbGlzCXI0LCBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkVAaAorCW9yaQlyNCwgcjQsIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRUBsCiAKIAkvKgogCSAqIENvbnZlcnQgdGhlIHNpemUsIGluIGJ5dGVzLCB0byB0aGUgbnVtYmVyIG9mIGNhY2hlIGxpbmVzL2Jsb2NrcwpAQCAtMTExOSwxMiArMTEyMCwxMiBAQAogCWxpcwlyMSwgQ09ORklHX1NZU19JTklUX1JBTV9BRERSQGgKIAlvcmkJcjEsIHIxLCBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUQGwKIAotCWxpcwlyNCwgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EID4+IDIpQGgKLQlvcmkJcjQsIHI0LCAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgPj4gMilAbAorCWxpcwlyNCwgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSA+PiAyKUBoCisJb3JpCXI0LCByNCwgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSA+PiAyKUBsCiAJbXRjdHIJcjQKIAogCWxpcwlyMiwgQ09ORklHX1NZU19JTklUX1JBTV9BRERSQGgKLQlvcmkJcjIsIHIyLCBDT05GSUdfU1lTX0lOSVRfUkFNX0VOREBsCisJb3JpCXIyLCByMiwgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFQGwKIAogCWxpcwlyNCwgQ09ORklHX1NZU19JTklUX1JBTV9QQVRURVJOQGgKIAlvcmkJcjQsIHI0LCBDT05GSUdfU1lTX0lOSVRfUkFNX1BBVFRFUk5AbApAQCAtMTM5OSw3ICsxNDAwLDcgQEAKIAogCS8qIEZsdXNoIGluaXRpYWwgZ2xvYmFsIGRhdGEgcmFuZ2UgKi8KIAltcglyMywgcjQKLQlhZGRpCXI0LCByNCwgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFQGwKKwlhZGRpCXI0LCByNCwgR0VORVJBVEVEX0dCTF9EQVRBX1NJWkVAbAogCWJsCWZsdXNoX2RjYWNoZV9yYW5nZQogCiAjaWYgZGVmaW5lZChDT05GSUdfU1lTX0lOSVRfRENBQ0hFX0NTKQpAQCAtMTQxNCw4ICsxNDE1LDggQEAKIAlsaXMJcjMsIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUkBoCiAJb3JpCXIzLCByMywgQ09ORklHX1NZU19JTklUX1JBTV9BRERSQGwKIAotCWxpcwlyNCwgQ09ORklHX1NZU19JTklUX1JBTV9FTkRAaAotCW9yaQlyNCwgcjQsIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EQGwKKwlsaXMJcjQsIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRUBoCisJb3JpCXI0LCByNCwgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFQGwKIAlhZGQJcjQsIHI0LCByMwogCiAJYmwJaW52YWxpZGF0ZV9kY2FjaGVfcmFuZ2UKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvcHBjNHh4L3RyYXBzLmMgYi9hcmNoL3Bvd2VycGMvY3B1L3BwYzR4eC90cmFwcy5jCmluZGV4IGI1NTYyYWQuLjliYWE3YTEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvcHBjNHh4L3RyYXBzLmMKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9wcGM0eHgvdHJhcHMuYwpAQCAtNDYsMTUgKzQ2LDYgQEAKICAqLwogI2RlZmluZSBFTkRfT0ZfTUVNCShnZC0+YmQtPmJpX21lbXN0YXJ0ICsgZ2QtPmJkLT5iaV9tZW1zaXplKQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNldF90c3IodW5zaWduZWQgbG9uZyB2YWwpCi17Ci0jaWYgZGVmaW5lZChDT05GSUdfNDQwKQotCWFzbSB2b2xhdGlsZSgibXRzcHIgMHgxNTAsICUwIiA6IDogInIiICh2YWwpKTsKLSNlbHNlCi0JYXNtIHZvbGF0aWxlKCJtdHRzciAlMCIgOiA6ICJyIiAodmFsKSk7Ci0jZW5kaWYKLX0KLQogc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBnZXRfZXNyKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyB2YWw7CkBAIC0zNjQsNyArMzU1LDcgQEAKIAkvKgogCSAqIFJlc2V0IFBJVCBpbnRlcnJ1cHQKIAkgKi8KLQlzZXRfdHNyKDB4MDgwMDAwMDApOworCW10c3ByKFNQUk5fVFNSLCAweDA4MDAwMDAwKTsKIAogCS8qCiAJICogQ2FsbCB0aW1lcl9pbnRlcnJ1cHQgcm91dGluZSBpbiBpbnRlcnJ1cHRzLmMKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9mc2xfZGRyX3NkcmFtLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZnNsX2Rkcl9zZHJhbS5oCmluZGV4IGQ1NzZlYjguLjE3ZDRiMzEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9mc2xfZGRyX3NkcmFtLmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZzbF9kZHJfc2RyYW0uaApAQCAtMjEzLDQgKzIxMywxMCBAQAogfSBtZW1jdGxfb3B0aW9uc190OwogCiBleHRlcm4gcGh5c19zaXplX3QgZnNsX2Rkcl9zZHJhbSh2b2lkKTsKKwordHlwZWRlZiBzdHJ1Y3QgZml4ZWRfZGRyX3Bhcm17CisJaW50IG1pbl9mcmVxOworCWludCBtYXhfZnJlcTsKKwlmc2xfZGRyX2NmZ19yZWdzX3QgKmRkcl9zZXR0aW5nczsKK30gZml4ZWRfZGRyX3Bhcm1fdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZzbF9lbmV0LmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZnNsX2VuZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmIyODU3Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZzbF9lbmV0LmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEwIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fQVNNX1BQQ19GU0xfRU5FVF9ICisjZGVmaW5lIF9fQVNNX1BQQ19GU0xfRU5FVF9ICisKK2VudW0gZnNsX3BoeV9lbmV0X2lmIHsKKwlNSUksCisJUk1JSSwKKwlHTUlJLAorCVJHTUlJLAorCVJHTUlJX0lELAorCVJHTUlJX1JYSUQsCisJUkdNSUlfVFhJRCwKKwlTR01JSSwKKwlUQkksCisJUlRCSSwKKwlYQVVJLAorCUZTTF9FVEhfSUZfTk9ORSwKK307CisKK2ludCBmZHRfZml4dXBfcGh5X2Nvbm5lY3Rpb24odm9pZCAqYmxvYiwgaW50IG9mZnNldCwgZW51bSBmc2xfcGh5X2VuZXRfaWYgcGh5Yyk7CisKKyNlbmRpZiAvKiBfX0FTTV9QUENfRlNMX0VORVRfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2dsb2JhbF9kYXRhLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaAppbmRleCAyYTMyM2UxLi4yZTIxOGRlIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaApAQCAtMzQsNyArMzQsNyBAQAogICogZ2xvYmFsIHZhcmlhYmxlcyBkdXJpbmcgc3lzdGVtIGluaXRpYWxpemF0aW9uICh1bnRpbCB3ZSBoYXZlIHNldAogICogdXAgdGhlIG1lbW9yeSBjb250cm9sbGVyIHNvIHRoYXQgd2UgY2FuIHVzZSBSQU0pLgogICoKLSAqIEtlZXAgaXQgKlNNQUxMKiBhbmQgcmVtZW1iZXIgdG8gc2V0IENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSA+IHNpemVvZihnZF90KQorICogS2VlcCBpdCAqU01BTEwqIGFuZCByZW1lbWJlciB0byBzZXQgR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUgPiBzaXplb2YoZ2RfdCkKICAqLwogCiB0eXBlZGVmCXN0cnVjdAlnbG9iYWxfZGF0YSB7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbGliL2JvYXJkLmMgYi9hcmNoL3Bvd2VycGMvbGliL2JvYXJkLmMKaW5kZXggYzBjN2ZkNC4uMmUwNzQ5ZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2xpYi9ib2FyZC5jCisrKyBiL2FyY2gvcG93ZXJwYy9saWIvYm9hcmQuYwpAQCAtMTc1LDYgKzE3NSwxNiBAQAogfQogdm9pZCBib2FyZF9hZGRfcmFtX2luZm8oaW50KSBfX2F0dHJpYnV0ZV9fKCh3ZWFrLCBhbGlhcygiX19ib2FyZF9hZGRfcmFtX2luZm8iKSkpOwogCitpbnQgX19ib2FyZF9mbGFzaF93cF9vbih2b2lkKQoreworCS8qCisJICogTW9zdCBmbGFzaGVzIGNhbid0IGJlIGRldGVjdGVkIHdoZW4gd3JpdGUgcHJvdGVjdGlvbiBpcyBlbmFibGVkLAorCSAqIHNvIHByb3ZpZGUgYSB3YXkgdG8gbGV0IFUtQm9vdCBncmFjZWZ1bGx5IGlnbm9yZSB3cml0ZSBwcm90ZWN0ZWQKKwkgKiBkZXZpY2VzLgorCSAqLworCXJldHVybiAwOworfQoraW50IGJvYXJkX2ZsYXNoX3dwX29uKHZvaWQpIF9fYXR0cmlidXRlX18oKHdlYWssIGFsaWFzKCJfX2JvYXJkX2ZsYXNoX3dwX29uIikpKTsKIAogc3RhdGljIGludCBpbml0X2Z1bmNfcmFtICh2b2lkKQogewpAQCAtNjk4LDcgKzcwOCwxMSBAQAogI2lmICFkZWZpbmVkKENPTkZJR19TWVNfTk9fRkxBU0gpCiAJcHV0cyAoIkZMQVNIOiAiKTsKIAotCWlmICgoZmxhc2hfc2l6ZSA9IGZsYXNoX2luaXQgKCkpID4gMCkgeworCWlmIChib2FyZF9mbGFzaF93cF9vbigpKSB7CisJCXByaW50ZigiVW5pbml0aWFsaXplZCAtIFdyaXRlIFByb3RlY3QgT25cbiIpOworCQkvKiBTaW5jZSBXUCBpcyBvbiwgd2UgY2FuJ3QgZmluZCByZWFsIHNpemUuICBTZXQgdG8gMCAqLworCQlmbGFzaF9zaXplID0gMDsKKwl9IGVsc2UgaWYgKChmbGFzaF9zaXplID0gZmxhc2hfaW5pdCAoKSkgPiAwKSB7CiAjIGlmZGVmIENPTkZJR19TWVNfRkxBU0hfQ0hFQ0tTVU0KIAkJcHJpbnRfc2l6ZSAoZmxhc2hfc2l6ZSwgIiIpOwogCQkvKgpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9jb25maWcubWsgYi9hcmNoL3NoL2NvbmZpZy5tawppbmRleCAwN2JhNjhmLi40MTVjOTQ5IDEwMDY0NAotLS0gYS9hcmNoL3NoL2NvbmZpZy5taworKysgYi9hcmNoL3NoL2NvbmZpZy5tawpAQCAtMjksNiArMjksNiBAQAogZW5kaWYKIAogUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfU0ggLURfX1NIX18KLVBMQVRGT1JNX0xERkxBR1MgKz0gLWUgJChDT05GSUdfU1lTX1RFWFRfQkFTRSkgLS1kZWZzeW0gcmVsb2NfZHN0PSQoVEVYVF9CQVNFKQorUExBVEZPUk1fTERGTEFHUyArPSAtZSAkKENPTkZJR19TWVNfVEVYVF9CQVNFKSAtLWRlZnN5bSByZWxvY19kc3Q9JChDT05GSUdfU1lTX1RFWFRfQkFTRSkKIAogTERTQ1JJUFQgOj0gJChTUkNUUkVFKS8kKENQVURJUikvdS1ib290LmxkcwpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9jcHUvc2gyL3N0YXJ0LlMgYi9hcmNoL3NoL2NwdS9zaDIvc3RhcnQuUwppbmRleCAwYWI4NjdkLi43NzA0M2Y2IDEwMDY0NAotLS0gYS9hcmNoL3NoL2NwdS9zaDIvc3RhcnQuUworKysgYi9hcmNoL3NoL2NwdS9zaDIvc3RhcnQuUwpAQCAtMTgsNiArMTgsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDx2ZXJzaW9uLmg+CiAKQEAgLTczLDYgKzc0LDYgQEAKIC5fcmVsb2NfZHN0X2VuZDoJLmxvbmcJcmVsb2NfZHN0X2VuZAogLl9ic3Nfc3RhcnQ6CQkubG9uZwlic3Nfc3RhcnQKIC5fYnNzX2VuZDoJCS5sb25nCWJzc19lbmQKLS5fZ2RfaW5pdDoJCS5sb25nCShfc3RhcnQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCi0uX3N0YWNrX2luaXQ6CS5sb25nCShfc3RhcnQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgLSBDT05GSUdfU1lTX01BTExPQ19MRU4gLSAxNikKKy5fZ2RfaW5pdDoJCS5sb25nCShfc3RhcnQgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKKy5fc3RhY2tfaW5pdDoJLmxvbmcJKF9zdGFydCAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFIC0gQ09ORklHX1NZU19NQUxMT0NfTEVOIC0gMTYpCiAuX3NoX2dlbmVyaWNfaW5pdDoJLmxvbmcJc2hfZ2VuZXJpY19pbml0CmRpZmYgLS1naXQgYS9hcmNoL3NoL2NwdS9zaDMvc3RhcnQuUyBiL2FyY2gvc2gvY3B1L3NoMy9zdGFydC5TCmluZGV4IGMwZjgzMjYuLjlkZDIzMDMgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvY3B1L3NoMy9zdGFydC5TCisrKyBiL2FyY2gvc2gvY3B1L3NoMy9zdGFydC5TCkBAIC0yMSw2ICsyMSw3IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPHZlcnNpb24uaD4KIApAQCAtNzIsNiArNzMsNiBAQAogLl9yZWxvY19kc3RfZW5kOgkubG9uZwlyZWxvY19kc3RfZW5kCiAuX2Jzc19zdGFydDoJCS5sb25nCWJzc19zdGFydAogLl9ic3NfZW5kOgkJLmxvbmcJYnNzX2VuZAotLl9nZF9pbml0OgkJLmxvbmcJKF9zdGFydCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKLS5fc3RhY2tfaW5pdDoJLmxvbmcJKF9zdGFydCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAtIENPTkZJR19TWVNfTUFMTE9DX0xFTiAtIDE2KQorLl9nZF9pbml0OgkJLmxvbmcJKF9zdGFydCAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQorLl9zdGFja19pbml0OgkubG9uZwkoX3N0YXJ0IC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUgLSBDT05GSUdfU1lTX01BTExPQ19MRU4gLSAxNikKIC5fc2hfZ2VuZXJpY19pbml0OgkubG9uZwlzaF9nZW5lcmljX2luaXQKZGlmZiAtLWdpdCBhL2FyY2gvc2gvY3B1L3NoNC9zdGFydC5TIGIvYXJjaC9zaC9jcHUvc2g0L3N0YXJ0LlMKaW5kZXggNzExYWU2Ni4uNGI1ZjYwNiAxMDA2NDQKLS0tIGEvYXJjaC9zaC9jcHUvc2g0L3N0YXJ0LlMKKysrIGIvYXJjaC9zaC9jcHUvc2g0L3N0YXJ0LlMKQEAgLTE4LDYgKzE4LDcgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8dmVyc2lvbi5oPgogCkBAIC02OSw2ICs3MCw2IEBACiAuX3JlbG9jX2RzdF9lbmQ6CS5sb25nCXJlbG9jX2RzdF9lbmQKIC5fYnNzX3N0YXJ0OgkJLmxvbmcJYnNzX3N0YXJ0CiAuX2Jzc19lbmQ6CQkubG9uZwlic3NfZW5kCi0uX2dkX2luaXQ6CQkubG9uZwkoX3N0YXJ0IC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQotLl9zdGFja19pbml0OgkJLmxvbmcJKF9zdGFydCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAtIENPTkZJR19TWVNfTUFMTE9DX0xFTiAtIDE2KQorLl9nZF9pbml0OgkJLmxvbmcJKF9zdGFydCAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQorLl9zdGFja19pbml0OgkJLmxvbmcJKF9zdGFydCAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFIC0gQ09ORklHX1NZU19NQUxMT0NfTEVOIC0gMTYpCiAuX3NoX2dlbmVyaWNfaW5pdDoJLmxvbmcJc2hfZ2VuZXJpY19pbml0CmRpZmYgLS1naXQgYS9hcmNoL3NoL2xpYi9ib2FyZC5jIGIvYXJjaC9zaC9saWIvYm9hcmQuYwppbmRleCBhMzAyZmMyLi5mZTUzYWI0IDEwMDY0NAotLS0gYS9hcmNoL3NoL2xpYi9ib2FyZC5jCisrKyBiL2FyY2gvc2gvbGliL2JvYXJkLmMKQEAgLTg5LDcgKzg5LDcgQEAKIAogc3RhdGljIGludCBzaF9tZW1fZW52X2luaXQodm9pZCkKIHsKLQltZW1fbWFsbG9jX2luaXQoQ09ORklHX1NZU19URVhUX0JBU0UgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgLQorCW1lbV9tYWxsb2NfaW5pdChDT05GSUdfU1lTX1RFWFRfQkFTRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFIC0KIAkJCUNPTkZJR19TWVNfTUFMTE9DX0xFTiwgQ09ORklHX1NZU19NQUxMT0NfTEVOIC0gMTYpOwogCWVudl9yZWxvY2F0ZSgpOwogCWp1bXB0YWJsZV9pbml0KCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAKIAliZF90ICpiZDsKIAlpbml0X2ZuY190ICoqaW5pdF9mbmNfcHRyOwogCi0JbWVtc2V0KGdkLCAwLCBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpOworCW1lbXNldChnZCwgMCwgR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpOwogCiAJZ2QtPmZsYWdzIHw9IEdEX0ZMR19SRUxPQzsJLyogdGVsbCBvdGhlcnM6IHJlbG9jYXRpb24gZG9uZSAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3NoL2xpYi9ib290bS5jIGIvYXJjaC9zaC9saWIvYm9vdG0uYwppbmRleCA5YzU4ZWQ3Li5mMzhkMGIwIDEwMDY0NAotLS0gYS9hcmNoL3NoL2xpYi9ib290bS5jCisrKyBiL2FyY2gvc2gvbGliL2Jvb3RtLmMKQEAgLTQzLDYgKzQzLDQxIEBACiB9CiAjZW5kaWYKIAorI2RlZmluZSBNT1VOVF9ST09UX1JET05MWQkweDAwMAorI2RlZmluZSBSQU1ESVNLX0ZMQUdTCQkweDAwNAorI2RlZmluZSBPUklHX1JPT1RfREVWCQkweDAwOAorI2RlZmluZSBMT0FERVJfVFlQRQkJCTB4MDBjCisjZGVmaW5lIElOSVRSRF9TVEFSVAkJMHgwMTAKKyNkZWZpbmUgSU5JVFJEX1NJWkUJCQkweDAxNAorI2RlZmluZSBDT01NQU5EX0xJTkUJCTB4MTAwCisKKyNkZWZpbmUgUkRfUFJPTVBUCSgxPDwxNSkKKyNkZWZpbmUgUkRfRE9MT0FECSgxPDwxNCkKKyNkZWZpbmUgQ01EX0FSR19SRF9QUk9NUFQJInByb21wdF9yYW1kaXNrPSIKKyNkZWZpbmUgQ01EX0FSR19SRF9ET0xPQUQJImxvYWRfcmFtZGlzaz0iCisKKyNpZmRlZiBDT05GSUdfU0hfU0RSQU1fT0ZGU0VUCisjZGVmaW5lIEdFVF9JTklUUkRfU1RBUlQoaW5pdHJkLCBsaW51eCkgKGluaXRyZCAtIGxpbnV4ICsgQ09ORklHX1NIX1NEUkFNX09GRlNFVCkKKyNlbHNlCisjZGVmaW5lIEdFVF9JTklUUkRfU1RBUlQoaW5pdHJkLCBsaW51eCkgKGluaXRyZCAtIGxpbnV4KQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHNldF9zaF9saW51eF9wYXJhbSh1bnNpZ25lZCBsb25nIHBhcmFtX2FkZHIsIHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwkqKHVuc2lnbmVkIGxvbmcgKikocGFyYW1fYWRkcikgPSBkYXRhOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBzaF9jaGVja19jbWRfYXJnKGNoYXIgKmNtZGxpbmUsIGNoYXIgKmtleSwgaW50IGJhc2UpCit7CisJdW5zaWduZWQgbG9uZyB2YWwgPSAwOworCWNoYXIgKnAgPSBzdHJzdHIoY21kbGluZSwga2V5KTsKKwlpZiAocCkgeworCQlwICs9IHN0cmxlbihrZXkpOworCQl2YWwgPSBzaW1wbGVfc3RydG9sKHAsIE5VTEwsIGJhc2UpOworCX0KKwlyZXR1cm4gdmFsOworfQorCiBpbnQgZG9fYm9vdG1fbGludXgoaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICogY29uc3QgYXJndltdLCBib290bV9oZWFkZXJzX3QgKmltYWdlcykKIHsKIAkvKiBMaW51eCBrZXJuZWwgbG9hZCBhZGRyZXNzICovCkBAIC01MSw3ICs4Niw3IEBACiAJdW5zaWduZWQgY2hhciAqcGFyYW0KIAkJPSAodW5zaWduZWQgY2hhciAqKWltYWdlX2dldF9sb2FkKGltYWdlcy0+bGVnYWN5X2hkcl9vcyk7CiAJLyogTGludXgga2VybmVsIGNvbW1hbmQgbGluZSAqLwotCWNoYXIgKmNtZGxpbmUgPSAoY2hhciAqKXBhcmFtICsgMHgxMDA7CisJY2hhciAqY21kbGluZSA9IChjaGFyICopcGFyYW0gKyBDT01NQU5EX0xJTkU7CiAJLyogUEFHRV9TSVpFICovCiAJdW5zaWduZWQgbG9uZyBzaXplID0gaW1hZ2VzLT5lcCAtICh1bnNpZ25lZCBsb25nKXBhcmFtOwogCWNoYXIgKmJvb3RhcmdzID0gZ2V0ZW52KCJib290YXJncyIpOwpAQCAtNjEsOCArOTYsMzcgQEAKIAogCS8qIFNldHVwIHBhcmFtZXRlcnMgKi8KIAltZW1zZXQocGFyYW0sIDAsIHNpemUpOwkvKiBDbGVhciB6ZXJvIHBhZ2UgKi8KKworCS8qIFNldCBjb21tYW5kbGluZSAqLwogCXN0cmNweShjbWRsaW5lLCBib290YXJncyk7CiAKKwlzaF9jaGVja19jbWRfYXJnKGJvb3RhcmdzLCBDTURfQVJHX1JEX0RPTE9BRCwgMTApOworCS8qIEluaXRyZCAqLworCWlmIChpbWFnZXMtPnJkX3N0YXJ0IHx8IGltYWdlcy0+cmRfZW5kKSB7CisJCXVuc2lnbmVkIGxvbmcgcmFtZGlza19mbGFncyA9IDA7CisJCWludCB2YWwgPSBzaF9jaGVja19jbWRfYXJnKGJvb3RhcmdzLCBDTURfQVJHX1JEX1BST01QVCwgMTApOworCQlpZiAodmFsID09IDEpCisJCQkJcmFtZGlza19mbGFncyB8PSBSRF9QUk9NUFQ7CisJCWVsc2UKKwkJCQlyYW1kaXNrX2ZsYWdzICY9IH5SRF9QUk9NUFQ7CisJCQkJCQorCQl2YWwgPSBzaF9jaGVja19jbWRfYXJnKGJvb3RhcmdzLCBDTURfQVJHX1JEX0RPTE9BRCwgMTApOworCQlpZiAodmFsID09IDEpCisJCQkJcmFtZGlza19mbGFncyB8PSBSRF9ET0xPQUQ7CisJCWVsc2UKKwkJCQlyYW1kaXNrX2ZsYWdzICY9IH5SRF9ET0xPQUQ7CisKKwkJc2V0X3NoX2xpbnV4X3BhcmFtKCh1bnNpZ25lZCBsb25nKXBhcmFtICsgTU9VTlRfUk9PVF9SRE9OTFksIDB4MDAwMSk7CisJCXNldF9zaF9saW51eF9wYXJhbSgodW5zaWduZWQgbG9uZylwYXJhbSArIFJBTURJU0tfRkxBR1MsIHJhbWRpc2tfZmxhZ3MpOworCQlzZXRfc2hfbGludXhfcGFyYW0oKHVuc2lnbmVkIGxvbmcpcGFyYW0gKyBPUklHX1JPT1RfREVWLCAweDAyMDApOworCQlzZXRfc2hfbGludXhfcGFyYW0oKHVuc2lnbmVkIGxvbmcpcGFyYW0gKyBMT0FERVJfVFlQRSwgMHgwMDAxKTsKKwkJc2V0X3NoX2xpbnV4X3BhcmFtKCh1bnNpZ25lZCBsb25nKXBhcmFtICsgSU5JVFJEX1NUQVJULAorCQkJR0VUX0lOSVRSRF9TVEFSVChpbWFnZXMtPnJkX3N0YXJ0LCBDT05GSUdfU1lTX1NEUkFNX0JBU0UpKTsKKwkJc2V0X3NoX2xpbnV4X3BhcmFtKCh1bnNpZ25lZCBsb25nKXBhcmFtICsgSU5JVFJEX1NJWkUsCisJCQlpbWFnZXMtPnJkX2VuZCAtIGltYWdlcy0+cmRfc3RhcnQpOworCX0KKworCS8qIEJvb3Qga2VybmVsICovCiAJa2VybmVsKCk7CiAJLyogZG9lcyBub3QgcmV0dXJuICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvY3B1L2xlb24yL3N0YXJ0LlMgYi9hcmNoL3NwYXJjL2NwdS9sZW9uMi9zdGFydC5TCmluZGV4IGRkNTgyNjIuLmYyMmZiN2UgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMvY3B1L2xlb24yL3N0YXJ0LlMKKysrIGIvYXJjaC9zcGFyYy9jcHUvbGVvbjIvc3RhcnQuUwpAQCAtMjEsNiArMjEsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxhc20vYXNtbWFjcm8uaD4KICNpbmNsdWRlIDxhc20vd2lubWFjcm8uaD4KZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvY3B1L2xlb24zL3N0YXJ0LlMgYi9hcmNoL3NwYXJjL2NwdS9sZW9uMy9zdGFydC5TCmluZGV4IDVjMDgwOGEuLjU2YWU4OGQgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMvY3B1L2xlb24zL3N0YXJ0LlMKKysrIGIvYXJjaC9zcGFyYy9jcHUvbGVvbjMvc3RhcnQuUwpAQCAtMjEsNiArMjEsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxhc20vYXNtbWFjcm8uaD4KICNpbmNsdWRlIDxhc20vd2lubWFjcm8uaD4KZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaCBiL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vZ2xvYmFsX2RhdGEuaAppbmRleCA3YzFhYzBkLi45YjE0Njc0IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL2dsb2JhbF9kYXRhLmgKKysrIGIvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9nbG9iYWxfZGF0YS5oCkBAIC0zNiw3ICszNiw3IEBACiAgKiBnbG9iYWwgdmFyaWFibGVzIGR1cmluZyBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gKHVudGlsIHdlIGhhdmUgc2V0CiAgKiB1cCB0aGUgbWVtb3J5IGNvbnRyb2xsZXIgc28gdGhhdCB3ZSBjYW4gdXNlIFJBTSkuCiAgKgotICogS2VlcCBpdCAqU01BTEwqIGFuZCByZW1lbWJlciB0byBzZXQgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFID4gc2l6ZW9mKGdkX3QpCisgKiBLZWVwIGl0ICpTTUFMTCogYW5kIHJlbWVtYmVyIHRvIHNldCBHRU5FUkFURURfR0JMX0RBVEFfU0laRSA+IHNpemVvZihnZF90KQogICovCiAKIHR5cGVkZWYgc3RydWN0IGdsb2JhbF9kYXRhIHsKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvbGliL2JvYXJkLmMgYi9hcmNoL3NwYXJjL2xpYi9ib2FyZC5jCmluZGV4IDA5YmNkYjAuLjRhNjA0MWYgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMvbGliL2JvYXJkLmMKKysrIGIvYXJjaC9zcGFyYy9saWIvYm9hcmQuYwpAQCAtMjQ0LDcgKzI0NCw3IEBACiAJcHJpbnRmKCJDT05GSUdfU1lTX1BST01fT0ZGU0VUOiAgICAgICAgMHglbHggKCVkKVxuIiwgQ09ORklHX1NZU19QUk9NX09GRlNFVCwKIAkgICAgICAgQ09ORklHX1NZU19QUk9NX1NJWkUpOwogCXByaW50ZigiQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQ6ICAgIDB4JWx4ICglZClcbiIsIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VULAotCSAgICAgICBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpOworCSAgICAgICBHRU5FUkFURURfR0JMX0RBVEFfU0laRSk7CiAjZW5kaWYKIAogI2lmZGVmIENPTkZJR19QT1NUCmRpZmYgLS1naXQgYS9ib2FyZC9hNG0wNzIvYTRtMDcyLmMgYi9ib2FyZC9hNG0wNzIvYTRtMDcyLmMKaW5kZXggYWU3Y2NiYi4uMDlhNWE1MSAxMDA2NDQKLS0tIGEvYm9hcmQvYTRtMDcyL2E0bTA3Mi5jCisrKyBiL2JvYXJkL2E0bTA3Mi9hNG0wNzIuYwpAQCAtMjcwLDggKzI3MCw2IEBACiBzdGF0aWMgdTggZGlzcGxheV9wdXRjX3BvczsKIHN0YXRpYyB1OCBkaXNwbGF5X291dF9wb3M7CiAKLXN0YXRpYyB1OCBkaXNwbGF5X2RvdF9lbmFibGU7Ci0KIHZvaWQgZGlzcGxheV9zZXQoaW50IGNtZCkgewogCiAJaWYgKGNtZCAmIERJU1BMQVlfQ0xFQVIpIHsKQEAgLTI4MSwxMiArMjc5LDYgQEAKIAlpZiAoY21kICYgRElTUExBWV9IT01FKSB7CiAJCWRpc3BsYXlfcHV0Y19wb3MgPSAwOwogCX0KLQotCWlmIChjbWQgJiBESVNQTEFZX01BUkspIHsKLQkJZGlzcGxheV9kb3RfZW5hYmxlID0gMTsKLQl9IGVsc2UgewotCQlkaXNwbGF5X2RvdF9lbmFibGUgPSAwOwotCX0KIH0KIAogI2RlZmluZSBTRUdfQSAgICAoMTw8MCkKQEAgLTMxNCwxMCArMzA2LDEyIEBACiAgKiBBLi5aCQlpbmRleCAxMC4uMzUKICAqIC0JCWluZGV4IDM2CiAgKiBfCQlpbmRleCAzNworICogLgkJaW5kZXggMzgKICAqLwogCiAjZGVmaW5lIFNZTUJPTF9EQVNICQkoMzYpCiAjZGVmaW5lIFNZTUJPTF9VTkRFUkxJTkUJKDM3KQorI2RlZmluZSBTWU1CT0xfRE9UCQkoMzgpCiAKIHN0YXRpYyB1OCBkaXNwbGF5X2NoYXIyc2VnN190YmxbXT0KIHsKQEAgLTMzNywyOCArMzMxLDI5IEBACiAJU0VHX0IgfCBTRUdfQyB8IFNFR19EIHwgU0VHX0UgfCBTRUdfRywJCQkvKiBkICovCiAJU0VHX0EgfCBTRUdfRCB8IFNFR19FIHwgU0VHX0YgfCBTRUdfRywJCQkvKiBFICovCiAJU0VHX0EgfCBTRUdfRSB8IFNFR19GIHwgU0VHX0csCQkJCS8qIEYgKi8KLQlTRUdfQSB8IFNFR19CIHwgU0VHX0MgfCBTRUdfRCB8IFNFR19GIHwgU0VHX0csCQkvKiBnICovCisJMCwJCQkJCS8qIGcgLSBub3QgZGlzcGxheWVkICovCiAJU0VHX0IgfCBTRUdfQyB8IFNFR19FIHwgU0VHX0YgfCBTRUdfRywJCQkvKiBIICovCi0JU0VHX0UgfCBTRUdfRiwJCQkJCQkvKiBJICovCi0JU0VHX0IgfCBTRUdfQyB8IFNFR19EIHwgU0VHX0UsCQkJCS8qIEogKi8KLQlTRUdfQSwJCQkJCQkvKiBLIC0gc3BlY2lhbCAxICovCisJU0VHX0IgfCBTRUdfQywJCQkJCQkvKiBJICovCisJMCwJCQkJCS8qIEogLSBub3QgZGlzcGxheWVkICovCisJMCwJCQkJCS8qIEsgLSBub3QgZGlzcGxheWVkICovCiAJU0VHX0QgfCBTRUdfRSB8IFNFR19GLAkJCQkJLyogTCAqLwotCVNFR19CLAkJCQkJCS8qIG0gLSBzcGVjaWFsIDIgKi8KLQlTRUdfQyB8IFNFR19FIHwgU0VHX0csCQkJCQkvKiBuICovCi0JU0VHX0MgfCBTRUdfRCB8IFNFR19FIHwgU0VHX0csCQkJCS8qIG8gKi8KKwkwLAkJCQkJLyogbSAtIG5vdCBkaXNwbGF5ZWQgKi8KKwkwLAkJCQkJLyogbiAtIG5vdCBkaXNwbGF5ZWQgKi8KKwlTRUdfQSB8IFNFR19CIHwgU0VHX0MgfCBTRUdfRCB8IFNFR19FIHwgU0VHX0YsCQkvKiBPICovCiAJU0VHX0EgfCBTRUdfQiB8IFNFR19FIHwgU0VHX0YgfCBTRUdfRywJCQkvKiBQICovCi0JU0VHX0EgfCBTRUdfQiB8IFNFR19DIHwgU0VHX0YgfCBTRUdfRywJCQkvKiBxICovCi0JU0VHX0UgfCBTRUdfRywJCQkJCQkvKiByICovCisJMCwJCQkJCS8qIHEgLSBub3QgZGlzcGxheWVkICovCisJMCwJCQkJCS8qIHIgLSBub3QgZGlzcGxheWVkICovCiAJU0VHX0EgfCBTRUdfQyB8IFNFR19EIHwgU0VHX0YgfCBTRUdfRywJCQkvKiBTICovCiAJU0VHX0QgfCBTRUdfRSB8IFNFR19GIHwgU0VHX0csCQkJCS8qIHQgKi8KIAlTRUdfQiB8IFNFR19DIHwgU0VHX0QgfCBTRUdfRSB8IFNFR19GLAkJCS8qIFUgKi8KLQlTRUdfQyB8IFNFR19EIHwgU0VHX0UgfCBTRUdfRiwJCQkJLyogViAqLwotCVNFR19DLAkJCQkJCS8qIHcgLSBzcGVjaWFsIDMgKi8KLQlTRUdfQiB8IFNFR19DIHwgU0VHX0UgfCBTRUdfRiB8IFNFR19HLAkJCS8qIFggKi8KKwkwLAkJCQkJLyogViAtIG5vdCBkaXNwbGF5ZWQgKi8KKwkwLAkJCQkJLyogdyAtIG5vdCBkaXNwbGF5ZWQgKi8KKwkwLAkJCQkJLyogWCAtIG5vdCBkaXNwbGF5ZWQgKi8KIAlTRUdfQiB8IFNFR19DIHwgU0VHX0QgfCBTRUdfRiB8IFNFR19HLAkJCS8qIFkgKi8KLQlTRUdfQSB8IFNFR19CIHwgU0VHX0QgfCBTRUdfRSB8IFNFR19HLAkJCS8qIFogKi8KKwkwLAkJCQkJLyogWiAtIG5vdCBkaXNwbGF5ZWQgKi8KIAlTRUdfRywJCQkJCQkJLyogLSAqLwotCVNFR19ECQkJCQkJCS8qIF8gKi8KKwlTRUdfRCwJCQkJCQkJLyogXyAqLworCVNFR19QCQkJCQkJCS8qIC4gKi8KIH07CiAKIC8qIENvbnZlcnQgY2hhciB0byB0aGUgTEVEIHNlZ21lbnRzIHJlcHJlc2VudGF0aW9uICovCkBAIC0zNzQsMjMgKzM2OSwyMCBAQAogCQljIC09ICdBJyAtIDEwOwogCWVsc2UgaWYgKGMgPT0gJy0nKQogCQljID0gU1lNQk9MX0RBU0g7Ci0JZWxzZSBpZiAoKGMgPT0gJ18nKSB8fCAoYyA9PSAnLicpKQorCWVsc2UgaWYgKGMgPT0gJ18nKQogCQljID0gU1lNQk9MX1VOREVSTElORTsKKwllbHNlIGlmIChjID09ICcuJykKKwkJYyA9IFNZTUJPTF9ET1Q7CiAJZWxzZQogCQljID0gJyAnOwkvKiBkaXNwbGF5IHVuc3VwcG9ydGVkIHN5bWJvbHMgYXMgc3BhY2UgKi8KIAogCWlmIChjICE9ICcgJykKIAkJdmFsID0gZGlzcGxheV9jaGFyMnNlZzdfdGJsWyhpbnQpY107CiAKLQkvKiBIYW5kbGUgRFAgTEVEIGhlcmUgKi8KLQlpZiAoZGlzcGxheV9kb3RfZW5hYmxlKSB7Ci0JCXZhbCB8PSBTRUdfUDsKLQl9Ci0KIAlyZXR1cm4gdmFsOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBkaXNwbGF5X3B1dGNfbm9tYXJrKGNoYXIgYykKK2ludCBkaXNwbGF5X3B1dGMoY2hhciBjKQogewogCWlmIChkaXNwbGF5X3B1dGNfcG9zID49IERJU1BMQVlfQlVGX1NJWkUpCiAJCXJldHVybiAtMTsKQEAgLTQwMywxMyArMzk1LDYgQEAKIAlyZXR1cm4gYzsKIH0KIAotaW50IGRpc3BsYXlfcHV0YyhjaGFyIGMpCi17Ci0JLyogTWFyayB0aGUgY29kZXMgZnJvbSB0aGUgImRpc3BsYXkiIGNvbW1hbmQgd2l0aCB0aGUgRFAgTEVEICovCi0JZGlzcGxheV9zZXQoRElTUExBWV9NQVJLKTsKLQlyZXR1cm4gZGlzcGxheV9wdXRjX25vbWFyayhjKTsKLX0KLQogLyoKICAqIEZsdXNoIGN1cnJlbnQgc3ltYm9sIHRvIHRoZSBMRUQgZGlzcGxheSBoYXJkd2FyZQogICovCkBAIC00OTMsOSArNDc4LDggQEAKIAlpZiAoYTRtMDcyX3N0YXR1czJjb2RlKHN0YXR1cywgYnVmKSA8IDApCiAJCXJldHVybjsKIAotCWRpc3BsYXlfc2V0KDApOwkvKiBDbGVhciBEUCBMZWQgKi8KLQlkaXNwbGF5X3B1dGNfbm9tYXJrKGJ1ZlswXSk7Ci0JZGlzcGxheV9wdXRjX25vbWFyayhidWZbMV0pOworCWRpc3BsYXlfcHV0YyhidWZbMF0pOworCWRpc3BsYXlfcHV0YyhidWZbMV0pOwogCWRpc3BsYXlfc2V0KERJU1BMQVlfSE9NRSk7CiAJZGlzcGxheV9vdXRfcG9zID0gMDsJLyogcmVzZXQgb3V0cHV0IHBvc2l0aW9uICovCiAKZGlmZiAtLWdpdCBhL2JvYXJkL2FtY2MvYmFtYm9vL2luaXQuUyBiL2JvYXJkL2FtY2MvYmFtYm9vL2luaXQuUwppbmRleCA2OTI1OTIxLi4zZDk5ODlkIDEwMDY0NAotLS0gYS9ib2FyZC9hbWNjL2JhbWJvby9pbml0LlMKKysrIGIvYm9hcmQvYW1jYy9iYW1ib28vaW5pdC5TCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPHBwY19hc20udG1wbD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxhc20vbW11Lmg+CmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL2JsdWVzdG9uZS9pbml0LlMgYi9ib2FyZC9hbWNjL2JsdWVzdG9uZS9pbml0LlMKaW5kZXggZTk2OWZjZi4uNGI5MGM4ZCAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9ibHVlc3RvbmUvaW5pdC5TCisrKyBiL2JvYXJkL2FtY2MvYmx1ZXN0b25lL2luaXQuUwpAQCAtMjEsNiArMjEsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxwcGNfYXNtLnRtcGw+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8YXNtL21tdS5oPgpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy9jYW55b25sYW5kcy9pbml0LlMgYi9ib2FyZC9hbWNjL2NhbnlvbmxhbmRzL2luaXQuUwppbmRleCA2NGQ1ZDQyLi42ODBmZWFhIDEwMDY0NAotLS0gYS9ib2FyZC9hbWNjL2NhbnlvbmxhbmRzL2luaXQuUworKysgYi9ib2FyZC9hbWNjL2NhbnlvbmxhbmRzL2luaXQuUwpAQCAtMjEsNiArMjEsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxwcGNfYXNtLnRtcGw+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8YXNtL21tdS5oPgpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy9zZXF1b2lhL2luaXQuUyBiL2JvYXJkL2FtY2Mvc2VxdW9pYS9pbml0LlMKaW5kZXggNzEzOWFhZS4uNDE5ZWY0ZiAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9zZXF1b2lhL2luaXQuUworKysgYi9ib2FyZC9hbWNjL3NlcXVvaWEvaW5pdC5TCkBAIC0yMSw2ICsyMSw3IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPHBwY19hc20udG1wbD4KICNpbmNsdWRlIDxhc20vbW11Lmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL3NlcXVvaWEvc2VxdW9pYS5jIGIvYm9hcmQvYW1jYy9zZXF1b2lhL3NlcXVvaWEuYwppbmRleCBjNTIzYmNhLi5iNTE4YWE3IDEwMDY0NAotLS0gYS9ib2FyZC9hbWNjL3NlcXVvaWEvc2VxdW9pYS5jCisrKyBiL2JvYXJkL2FtY2Mvc2VxdW9pYS9zZXF1b2lhLmMKQEAgLTE1NSw3ICsxNTUsOCBAQAogCWdkLT5iZC0+YmlfZmxhc2hzdGFydCA9IDAgLSBnZC0+YmQtPmJpX2ZsYXNoc2l6ZTsKIAlnZC0+YmQtPmJpX2ZsYXNob2Zmc2V0ID0gMDsKIAotI2lmIGRlZmluZWQoQ09ORklHX05BTkRfVV9CT09UKSB8fCBkZWZpbmVkKENPTkZJR19OQU5EX1NQTCkKKyNpZiBkZWZpbmVkKENPTkZJR19OQU5EX1VfQk9PVCkgfHwgZGVmaW5lZChDT05GSUdfTkFORF9TUEwpIHx8IFwKKyAgICBkZWZpbmVkKENPTkZJR19TWVNfUkFNQk9PVCkKIAltdGRjcihFQkMwX0NGR0FERFIsIFBCM0NSKTsKICNlbHNlCiAJbXRkY3IoRUJDMF9DRkdBRERSLCBQQjBDUik7CkBAIC0xNjMsNyArMTY0LDggQEAKIAlwYmNyID0gbWZkY3IoRUJDMF9DRkdEQVRBKTsKIAlzaXplX3ZhbCA9IGZmcyhnZC0+YmQtPmJpX2ZsYXNoc2l6ZSkgLSAyMTsKIAlwYmNyID0gKHBiY3IgJiAweDAwMDFmZmZmKSB8IGdkLT5iZC0+YmlfZmxhc2hzdGFydCB8IChzaXplX3ZhbCA8PCAxNyk7Ci0jaWYgZGVmaW5lZChDT05GSUdfTkFORF9VX0JPT1QpIHx8IGRlZmluZWQoQ09ORklHX05BTkRfU1BMKQorI2lmIGRlZmluZWQoQ09ORklHX05BTkRfVV9CT09UKSB8fCBkZWZpbmVkKENPTkZJR19OQU5EX1NQTCkgfHwgXAorICAgIGRlZmluZWQoQ09ORklHX1NZU19SQU1CT09UKQogCW10ZGNyKEVCQzBfQ0ZHQUREUiwgUEIzQ1IpOwogI2Vsc2UKIAltdGRjcihFQkMwX0NGR0FERFIsIFBCMENSKTsKZGlmZiAtLWdpdCBhL2JvYXJkL2FtY2MveW9zZW1pdGUvaW5pdC5TIGIvYm9hcmQvYW1jYy95b3NlbWl0ZS9pbml0LlMKaW5kZXggZWQzNzQxYy4uZDIzY2RjNyAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy95b3NlbWl0ZS9pbml0LlMKKysrIGIvYm9hcmQvYW1jYy95b3NlbWl0ZS9pbml0LlMKQEAgLTE5LDYgKzE5LDcgQEAKICogTUEgMDIxMTEtMTMwNyBVU0EKICovCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPHBwY19hc20udG1wbD4KICNpbmNsdWRlIDxhc20vbW11Lmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CmRpZmYgLS1naXQgYS9ib2FyZC9iYXJjby9lYXJseV9pbml0LlMgYi9ib2FyZC9iYXJjby9lYXJseV9pbml0LlMKaW5kZXggNTMxZGNkZi4uNjFiNGI1NSAxMDA2NDQKLS0tIGEvYm9hcmQvYmFyY28vZWFybHlfaW5pdC5TCisrKyBiL2JvYXJkL2JhcmNvL2Vhcmx5X2luaXQuUwpAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBfX0FTU0VNQkxZX18JMQogI2VuZGlmCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KICNpbmNsdWRlIDxtcGM4MjR4Lmg+CmRpZmYgLS1naXQgYS9ib2FyZC9jZXJmMjUwL01ha2VmaWxlIGIvYm9hcmQvY2VyZjI1MC9NYWtlZmlsZQppbmRleCBhODA2YjE4Li5iMTExYjUxIDEwMDY0NAotLS0gYS9ib2FyZC9jZXJmMjUwL01ha2VmaWxlCisrKyBiL2JvYXJkL2NlcmYyNTAvTWFrZWZpbGUKQEAgLTI2LDE3ICsyNiwxNSBAQAogTElCCT0gJChvYmopbGliJChCT0FSRCkuYQogCiBDT0JKUwk6PSBjZXJmMjUwLm8gZmxhc2gubwotU09CSlMJOj0gbG93bGV2ZWxfaW5pdC5vCiAKLVNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKK1NSQ1MJOj0gJChDT0JKUzoubz0uYykKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQotU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQogCi0kKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKQotCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKSAkKFNPQkpTKQorJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykKKwkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykKIAogY2xlYW46Ci0Jcm0gLWYgJChTT0JKUykgJChPQkpTKQorCXJtIC1mICQoT0JKUykKIAogZGlzdGNsZWFuOgljbGVhbgogCXJtIC1mICQoTElCKSBjb3JlICouYmFrICQob2JqKS5kZXBlbmQKZGlmZiAtLWdpdCBhL2JvYXJkL2NlcmYyNTAvY2VyZjI1MC5jIGIvYm9hcmQvY2VyZjI1MC9jZXJmMjUwLmMKaW5kZXggNTkzNDZiYy4uMDQzYWZlYSAxMDA2NDQKLS0tIGEvYm9hcmQvY2VyZjI1MC9jZXJmMjUwLmMKKysrIGIvYm9hcmQvY2VyZjI1MC9jZXJmMjUwLmMKQEAgLTM5LDggKzM5LDkgQEAKIAogaW50IGJvYXJkX2luaXQgKHZvaWQpCiB7Ci0JLyogbWVtb3J5IGFuZCBjcHUtc3BlZWQgYXJlIHNldHVwIGJlZm9yZSByZWxvY2F0aW9uICovCi0JLyogc28gd2UgZG8gX25vdGhpbmdfIGhlcmUgKi8KKwkvKiBXZSBoYXZlIFJBTSwgZGlzYWJsZSBjYWNoZSAqLworCWRjYWNoZV9kaXNhYmxlKCk7CisJaWNhY2hlX2Rpc2FibGUoKTsKIAogCS8qIGFyY2ggbnVtYmVyIG9mIGNlcmYgUFhBIEJvYXJkICovCiAJZ2QtPmJkLT5iaV9hcmNoX251bWJlciA9IE1BQ0hfVFlQRV9QWEFfQ0VSRjsKQEAgLTU4LDE5ICs1OSwxOCBAQAogCXJldHVybiAwOwogfQogCitleHRlcm4gdm9pZCBweGFfZHJhbV9pbml0KHZvaWQpOworaW50IGRyYW1faW5pdCh2b2lkKQoreworCXB4YV9kcmFtX2luaXQoKTsKKwlnZC0+cmFtX3NpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKKwlyZXR1cm4gMDsKK30KIAotaW50IGRyYW1faW5pdCAodm9pZCkKK3ZvaWQgZHJhbV9pbml0X2JhbmtzaXplKHZvaWQpCiB7CiAJZ2QtPmJkLT5iaV9kcmFtWzBdLnN0YXJ0ID0gUEhZU19TRFJBTV8xOwogCWdkLT5iZC0+YmlfZHJhbVswXS5zaXplID0gUEhZU19TRFJBTV8xX1NJWkU7Ci0JZ2QtPmJkLT5iaV9kcmFtWzFdLnN0YXJ0ID0gUEhZU19TRFJBTV8yOwotCWdkLT5iZC0+YmlfZHJhbVsxXS5zaXplID0gUEhZU19TRFJBTV8yX1NJWkU7Ci0JZ2QtPmJkLT5iaV9kcmFtWzJdLnN0YXJ0ID0gUEhZU19TRFJBTV8zOwotCWdkLT5iZC0+YmlfZHJhbVsyXS5zaXplID0gUEhZU19TRFJBTV8zX1NJWkU7Ci0JZ2QtPmJkLT5iaV9kcmFtWzNdLnN0YXJ0ID0gUEhZU19TRFJBTV80OwotCWdkLT5iZC0+YmlfZHJhbVszXS5zaXplID0gUEhZU19TRFJBTV80X1NJWkU7Ci0KLQlyZXR1cm4gMDsKIH0KIAogI2lmZGVmIENPTkZJR19DTURfTkVUCmRpZmYgLS1naXQgYS9ib2FyZC9jZXJmMjUwL2NvbmZpZy5tayBiL2JvYXJkL2NlcmYyNTAvY29uZmlnLm1rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmQ0NmIyLi4wMDAwMDAwCi0tLSBhL2JvYXJkL2NlcmYyNTAvY29uZmlnLm1rCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jCi0jIENlcmYgYm9hcmQgd2l0aCBQWEEyNTAgY3B1Ci0jCi0jCi1DT05GSUdfU1lTX1RFWFRfQkFTRSA9IDB4YTMwODAwMDAKZGlmZiAtLWdpdCBhL2JvYXJkL2NlcmYyNTAvbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvY2VyZjI1MC9sb3dsZXZlbF9pbml0LlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZmU1M2MuLjAwMDAwMDAKLS0tIGEvYm9hcmQvY2VyZjI1MC9sb3dsZXZlbF9pbml0LlMKKysrIC9kZXYvbnVsbApAQCAtMSw0MTEgKzAsMCBAQAotLyoKLSAqIE1vc3Qgb2YgdGhpcyB0YWtlbiBmcm9tIFJlZGJvb3QgaGFsX3BsYXRmb3JtX3NldHVwLmggd2l0aCBjbGVhbnVwCi0gKgotICogTk9URTogSSBoYXZlbid0IGNsZWFuIHRoaXMgdXAgY29uc2lkZXJhYmx5LCBqdXN0IGVub3VnaCB0byBnZXQgaXQKLSAqIHJ1bm5pbmcuIFNlZSBoYWxfcGxhdGZvcm1fc2V0dXAuaCBmb3IgdGhlIHNvdXJjZS4gU2VlCi0gKiBib2FyZC9jcmFkbGUvbG93bGV2ZWxfaW5pdC5TIGZvciBhbm90aGVyIFBYQTI1MCBzZXR1cCB0aGF0IGlzCi0gKiBtdWNoIGNsZWFuZXIuCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2luY2x1ZGUgPHZlcnNpb24uaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgotCi1EUkFNX1NJWkU6ICAubG9uZyAgIENPTkZJR19TWVNfRFJBTV9TSVpFCi0KLS8qIHdhaXQgZm9yIGNvcHJvY2Vzc29yIHdyaXRlIGNvbXBsZXRlICovCi0gICAubWFjcm8gQ1BXQUlUIHJlZwotICAgbXJjICBwMTUsMCxccmVnLGMyLGMwLDAKLSAgIG1vdiAgXHJlZyxccmVnCi0gICBzdWIgIHBjLHBjLCM0Ci0gICAuZW5kbQotCi0KLS8qCi0gKglNZW1vcnkgc2V0dXAKLSAqLwotCi0uZ2xvYmwgbG93bGV2ZWxfaW5pdAotbG93bGV2ZWxfaW5pdDoKLQotCS8qIFNldCB1cCBHUElPIHBpbnMgZmlyc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCWxkcglyMCwgPUdQU1IwCi0JbGRyCXIxLCA9Q09ORklHX1NZU19HUFNSMF9WQUwKLQlzdHIJcjEsIFtyMF0KLQotCWxkcglyMCwgPUdQU1IxCi0JbGRyCXIxLCA9Q09ORklHX1NZU19HUFNSMV9WQUwKLQlzdHIJcjEsIFtyMF0KLQotCWxkcglyMCwgPUdQU1IyCi0JbGRyCXIxLCA9Q09ORklHX1NZU19HUFNSMl9WQUwKLQlzdHIJcjEsIFtyMF0KLQotCWxkcglyMCwgPUdQQ1IwCi0JbGRyCXIxLCA9Q09ORklHX1NZU19HUENSMF9WQUwKLQlzdHIJcjEsIFtyMF0KLQotCWxkcglyMCwgPUdQQ1IxCi0JbGRyCXIxLCA9Q09ORklHX1NZU19HUENSMV9WQUwKLQlzdHIJcjEsIFtyMF0KLQotCWxkcglyMCwgPUdQQ1IyCi0JbGRyCXIxLCA9Q09ORklHX1NZU19HUENSMl9WQUwKLQlzdHIJcjEsIFtyMF0KLQotCWxkcglyMCwgPUdQRFIwCi0JbGRyCXIxLCA9Q09ORklHX1NZU19HUERSMF9WQUwKLQlzdHIJcjEsIFtyMF0KLQotCWxkcglyMCwgPUdQRFIxCi0JbGRyCXIxLCA9Q09ORklHX1NZU19HUERSMV9WQUwKLQlzdHIJcjEsIFtyMF0KLQotCWxkcglyMCwgPUdQRFIyCi0JbGRyCXIxLCA9Q09ORklHX1NZU19HUERSMl9WQUwKLQlzdHIJcjEsIFtyMF0KLQotCWxkcglyMCwgPUdBRlIwX0wKLQlsZHIJcjEsID1DT05GSUdfU1lTX0dBRlIwX0xfVkFMCi0Jc3RyCXIxLCBbcjBdCi0KLQlsZHIJcjAsID1HQUZSMF9VCi0JbGRyCXIxLCA9Q09ORklHX1NZU19HQUZSMF9VX1ZBTAotCXN0cglyMSwgW3IwXQotCi0JbGRyCXIwLCA9R0FGUjFfTAotCWxkcglyMSwgPUNPTkZJR19TWVNfR0FGUjFfTF9WQUwKLQlzdHIJcjEsIFtyMF0KLQotCWxkcglyMCwgPUdBRlIxX1UKLQlsZHIJcjEsID1DT05GSUdfU1lTX0dBRlIxX1VfVkFMCi0Jc3RyCXIxLCBbcjBdCi0KLQlsZHIJcjAsID1HQUZSMl9MCi0JbGRyCXIxLCA9Q09ORklHX1NZU19HQUZSMl9MX1ZBTAotCXN0cglyMSwgW3IwXQotCi0JbGRyCXIwLCA9R0FGUjJfVQotCWxkcglyMSwgPUNPTkZJR19TWVNfR0FGUjJfVV9WQUwKLQlzdHIJcjEsIFtyMF0KLQotCWxkcglyMCwgPVBTU1IJCQkvKiBlbmFibGUgR1BJTyBwaW5zICovCi0JbGRyCXIxLCA9Q09ORklHX1NZU19QU1NSX1ZBTAotCXN0cglyMSwgW3IwXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIEVuYWJsZSBtZW1vcnkgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogVGhlIHNlcXVlbmNlIGJlbG93IGlzIGJhc2VkIG9uIHRoZSByZWNvbW1lbmRlZCBpbml0IHN0ZXBzICAgICAgICAqLwotCS8qIGRldGFpbGVkIGluIHRoZSBJbnRlbCBQWEEyNTAgT3BlcmF0aW5nIFN5c3RlbXMgRGV2ZWxvcGVycyBHdWlkZSwgKi8KLQkvKiBDaGFwdGVyIDEwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMTogV2FpdCBmb3IgYXQgbGVhc3QgMjAwIG1pY3Jvc2Vkb25kcyB0byBhbGxvdyBpbnRlcm5hbCAgICAgKi8KLQkvKiAgICAgICAgIGNsb2NrcyB0byBzZXR0bGUuIE9ubHkgbmVjZXNzYXJ5IGFmdGVyIGhhcmQgcmVzZXQuLi4gICAgICovCi0JLyogICAgICAgICBGSVhNRTogY2FuIGJlIG9wdGltaXplZCBsYXRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCWxkcglyMywgPU9TQ1IJCQkvKiByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybyAqLwotCW1vdglyMiwgIzAKLQlzdHIJcjIsIFtyM10KLQlsZHIJcjQsID0weDMwMAkJCS8qIHJlYWxseSAweDJFMSBpcyBhYm91dCAyMDB1c2VjLCAgICovCi0JCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICAgICAgICAqLwotMToKLQlsZHIJcjIsIFtyM10KLQljbXAJcjQsIHIyCi0JYmd0CTFiCi0KLW1lbV9pbml0OgotCi0JbGRyCXIxLCA9TUVNQ19CQVNFCQkJLyogZ2V0IG1lbW9yeSBjb250cm9sbGVyIGJhc2UgYWRkci4gKi8KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJhOiBJbml0aWFsaXplIEFzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5IGNvbnRyb2xsZXIgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogTVNDIHJlZ2lzdGVyczogdGltaW5nLCBidXMgd2lkdGgsIG1lbSB0eXBlICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JLyogTVNDMDogbkNTKDAsMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkcglyMiwgPUNPTkZJR19TWVNfTVNDMF9WQUwKLQlzdHIJcjIsIFtyMSwgI01TQzBfT0ZGU0VUXQotCWxkcglyMiwgW3IxLCAjTVNDMF9PRkZTRVRdCQkvKiByZWFkIGJhY2sgdG8gZW5zdXJlICAgICAgKi8KLQkJCQkJCS8qIHRoYXQgZGF0YSBsYXRjaGVzICAgICAgICAqLwotCS8qIE1TQzE6IG5DUygyLDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIJcjIsID1DT05GSUdfU1lTX01TQzFfVkFMCi0Jc3RyCXIyLCBbcjEsICNNU0MxX09GRlNFVF0KLQlsZHIJcjIsIFtyMSwgI01TQzFfT0ZGU0VUXQotCi0JLyogTVNDMjogbkNTKDQsNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkcglyMiwgPUNPTkZJR19TWVNfTVNDMl9WQUwKLQlzdHIJcjIsIFtyMSwgI01TQzJfT0ZGU0VUXQotCWxkcglyMiwgW3IxLCAjTVNDMl9PRkZTRVRdCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAyYjogSW5pdGlhbGl6ZSBDYXJkIEludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIE1FQ1I6IE1lbW9yeSBFeHBhbnNpb24gQ2FyZCBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIJcjIsID1DT05GSUdfU1lTX01FQ1JfVkFMCi0Jc3RyCXIyLCBbcjEsICNNRUNSX09GRlNFVF0KLQlsZHIJcjIsIFtyMSwgI01FQ1JfT0ZGU0VUXQotCi0JLyogTUNNRU0wOiBDYXJkIEludGVyZmFjZSBzbG90IDAgdGltaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkcglyMiwgPUNPTkZJR19TWVNfTUNNRU0wX1ZBTAotCXN0cglyMiwgW3IxLCAjTUNNRU0wX09GRlNFVF0KLQlsZHIJcjIsIFtyMSwgI01DTUVNMF9PRkZTRVRdCi0KLQkvKiBNQ01FTTE6IENhcmQgSW50ZXJmYWNlIHNsb3QgMSB0aW1pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyCXIyLCA9Q09ORklHX1NZU19NQ01FTTFfVkFMCi0Jc3RyCXIyLCBbcjEsICNNQ01FTTFfT0ZGU0VUXQotCWxkcglyMiwgW3IxLCAjTUNNRU0xX09GRlNFVF0KLQotCS8qIE1DQVRUMDogQ2FyZCBJbnRlcmZhY2UgQXR0cmlidXRlIFNwYWNlIFRpbWluZywgc2xvdCAwICAgICAgICAgICAgKi8KLQlsZHIJcjIsID1DT05GSUdfU1lTX01DQVRUMF9WQUwKLQlzdHIJcjIsIFtyMSwgI01DQVRUMF9PRkZTRVRdCi0JbGRyCXIyLCBbcjEsICNNQ0FUVDBfT0ZGU0VUXQotCi0JLyogTUNBVFQxOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDEgICAgICAgICAgICAqLwotCWxkcglyMiwgPUNPTkZJR19TWVNfTUNBVFQxX1ZBTAotCXN0cglyMiwgW3IxLCAjTUNBVFQxX09GRlNFVF0KLQlsZHIJcjIsIFtyMSwgI01DQVRUMV9PRkZTRVRdCi0KLQkvKiBNQ0lPMDogQ2FyZCBJbnRlcmZhY2UgSS9PIFNwYWNlIFRpbWluZywgc2xvdCAwICAgICAgICAgICAgICAgICAgICovCi0JbGRyCXIyLCA9Q09ORklHX1NZU19NQ0lPMF9WQUwKLQlzdHIJcjIsIFtyMSwgI01DSU8wX09GRlNFVF0KLQlsZHIJcjIsIFtyMSwgI01DSU8wX09GRlNFVF0KLQotCS8qIE1DSU8xOiBDYXJkIEludGVyZmFjZSBJL08gU3BhY2UgVGltaW5nLCBzbG90IDEgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIJcjIsID1DT05GSUdfU1lTX01DSU8xX1ZBTAotCXN0cglyMiwgW3IxLCAjTUNJTzFfT0ZGU0VUXQotCWxkcglyMiwgW3IxLCAjTUNJTzFfT0ZGU0VUXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMmM6IFdyaXRlIEZMWUNORkcgIEZJWE1FOiB3aGF0J3MgdGhhdD8/PyAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJkOiBJbml0aWFsaXplIFRpbWluZyBmb3IgU3luYyBNZW1vcnkgKFNEQ0xLMCkgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogQmVmb3JlIGFjY2Vzc2luZyBNRFJFRlIgd2UgbmVlZCBhIHZhbGlkIERSSSBmaWVsZCwgc28gd2Ugc2V0ICAgICAqLwotCS8qIHRoaXMgdG8gcG93ZXIgb24gZGVmYXVsdHMgKyBEUkkgZmllbGQsIHNldCBTRFJBTSBjbG9ja3MgZnJlZSBydW5uaW5nICovCi0KLQlsZHIJcjMsID1DT05GSUdfU1lTX01EUkVGUl9WQUwKLQlsZHIJcjIsID0weEZGRgotCWFuZAlyMywgcjMsICByMgotCi0JbGRyCXIwLCBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCWJpYwlyMCwgcjAsIHIyCi0JYmljCXIwLCByMCwgIyhNRFJFRlJfSzBGUkVFfE1EUkVGUl9LMUZSRUV8TURSRUZSX0syRlJFRSkKLQlvcnIJcjAsIHIwLCByMwotCi0Jc3RyCXIwLCBbcjEsICNNRFJFRlJfT0ZGU0VUXQkvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KLQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMzogSW5pdGlhbGl6ZSBTeW5jaHJvbm91cyBTdGF0aWMgTWVtb3J5IChGbGFzaC9QZXJpcGhlcmFscykgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBJbml0aWFsaXplIFNYQ05GRyByZWdpc3Rlci4gQXNzZXJ0IHRoZSBlbmFibGUgYml0cyAgICAgICAgICAgICAgICovCi0KLQkvKiBXcml0ZSBTWE1SUyB0byBjYXVzZSBhbiBNUlMgY29tbWFuZCB0byBhbGwgZW5hYmxlZCBiYW5rcyBvZiAgICAgICovCi0JLyogc3luY2hyb25vdXMgc3RhdGljIG1lbW9yeS4gTm90ZSB0aGF0IFNYTENSIG5lZWQgbm90IGJlIHdyaXR0ZW4gICAqLwotCS8qIGF0IHRoaXMgdGltZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCS8qIEZJWE1FOiB3ZSB1c2UgYXN5bmMgbW9kZSBmb3Igbm93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgNDogSW5pdGlhbGl6ZSBTRFJBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBzZXQgTURSRUZSIGFjY29yZGluZyB0byB1c2VyIGRlZmluZSB3aXRoIGV4Y2VwdGlvbiBvZiBhIGZldyBiaXRzICovCi0KLQlsZHIgICAgIHI0LCA9Q09ORklHX1NZU19NRFJFRlJfVkFMCi0JbGRyCXIyLCA9KE1EUkVGUl9LMFJVTnxNRFJFRlJfSzBEQjJ8TURSRUZSX0sxUlVOfE1EUkVGUl9LMURCMnxcCi0JCQkJCU1EUkVGUl9LMlJVTiB8TURSRUZSX0syREIyKQotCWFuZAlyNCwgcjQsIHIyCi0JYmljCXIwLCByMCwgcjIKLQlvcnIJcjAsIHIwLCByNAotCi0Jc3RyICAgICByMCwgW3IxLCAjTURSRUZSX09GRlNFVF0gICAgLyogd3JpdGUgYmFjayBNRFJFRlIgICAgICAgICovCi0JbGRyICAgICByMCwgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCS8qIFN0ZXAgNGI6IGRlLWFzc2VydCBNRFJFRlI6U0xGUlNILiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCWJpYwlyMCwgcjAsICMoTURSRUZSX1NMRlJTSCkKLQlzdHIgICAgIHIwLCBbcjEsICNNRFJFRlJfT0ZGU0VUXSAgICAvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KLQlsZHIgICAgIHIwLCBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0KLQkvKiBTdGVwIDRjOiBhc3NlcnQgTURSRUZSOkUxUElOIGFuZCBFMFBJTyBhcyBkZXNpcmVkLCBzZXQgS1hGUkVFICAqLwotCi0JbGRyICAgICByNCwgPUNPTkZJR19TWVNfTURSRUZSX1ZBTAotCWxkcglyMiwgPShNRFJFRlJfRTBQSU58TURSRUZSX0UxUElOfE1EUkVGUl9LMEZSRUV8IFwKLQkJCU1EUkVGUl9LMUZSRUUgfCBNRFJFRlJfSzJGUkVFKQotCWFuZAlyNCwgcjQsIHIyCi0Jb3JyCXIwLCByMCwgcjQKLQlzdHIgICAgIHIwLCBbcjEsICNNRFJFRlJfT0ZGU0VUXSAgICAvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KLQlsZHIgICAgIHIwLCBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0KLQkvKiBTdGVwIDRkOiB3cml0ZSBNRENORkcgd2l0aCBNRENORkc6REV4IGRlYXNzZXJ0ZWQgKHNldCB0byAwKSwgdG8gICovCi0JLyogICAgICAgICAgY29uZmlndXJlIGJ1dCBub3QgZW5hYmxlIGVhY2ggU0RSQU0gcGFydGl0aW9uIHBhaXIuICAgICAqLwotCi0JbGRyCXI0LCA9Q09ORklHX1NZU19NRENORkdfVkFMCi0JYmljCXI0LCByNCwgIyhNRENORkdfREUwfE1EQ05GR19ERTEpCi0JYmljCXI0LCByNCwgIyhNRENORkdfREUyfE1EQ05GR19ERTMpCi0Jc3RyICAgICByNCwgW3IxLCAjTURDTkZHX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRENORkcgICAgICAgICovCi0JbGRyICAgICByNCwgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotCi0JLyogU3RlcCA0ZTogV2FpdCBmb3IgdGhlIGNsb2NrIHRvIHRoZSBTRFJBTXMgdG8gc3RhYmlsaXplLCAgICAgICAgICAqLwotCS8qICAgICAgICAgIDEwMC4uMjAwILVzZWMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCWxkcglyMywgPU9TQ1IJCQkvKiByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybyAqLwotCW1vdglyMiwgIzAKLQlzdHIJcjIsIFtyM10KLQlsZHIJcjQsID0weDMwMAkJCS8qIHJlYWxseSAweDJFMSBpcyBhYm91dCAyMDB1c2VjLCAgICovCi0JCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICAgICAgICAqLwotMToKLQlsZHIJcjIsIFtyM10KLQljbXAJcjQsIHIyCi0JYmd0CTFiCi0KLQotCS8qIFN0ZXAgNGY6IFRyaWdnZXIgYSBudW1iZXIgKHVzdWFsbHkgOCkgcmVmcmVzaCBjeWNsZXMgYnkgICAgICAgICAgKi8KLQkvKiAgICAgICAgICBhdHRlbXB0aW5nIG5vbi1idXJzdCByZWFkIG9yIHdyaXRlIGFjY2Vzc2VzIHRvIGRpc2FibGVkICovCi0JLyogICAgICAgICAgU0RSQU0sIGFzIGNvbW1vbmx5IHNwZWNpZmllZCBpbiB0aGUgcG93ZXIgdXAgc2VxdWVuY2UgICAqLwotCS8qICAgICAgICAgIGRvY3VtZW50ZWQgaW4gU0RSQU0gZGF0YSBzaGVldHMuIFRoZSBhZGRyZXNzKGVzKSB1c2VkICAgKi8KLQkvKiAgICAgICAgICBmb3IgdGhpcyBwdXJwb3NlIG11c3Qgbm90IGJlIGNhY2hlYWJsZS4gICAgICAgICAgICAgICAgICovCi0KLQlsZHIJcjMsID1DT05GSUdfU1lTX0RSQU1fQkFTRQotLnJlcHQgOAotCXN0cglyMiwgW3IzXQotLmVuZHIKLQotCS8qIFN0ZXAgNGc6IFdyaXRlIE1EQ05GRyB3aXRoIGVuYWJsZSBiaXRzIGFzc2VydGVkICAgICAgICAgICAgICAgICAgKi8KLQkvKiAgICAgICAgICAoTURDTkZHOkRFeCBzZXQgdG8gMSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQlsZHIgICAgIHIzLCBbcjEsICNNRENORkdfT0ZGU0VUXQotCW9ycglyMywgcjMsICMoTURDTkZHX0RFMHxNRENORkdfREUxKQotCXN0ciAgICAgcjMsIFtyMSwgI01EQ05GR19PRkZTRVRdCi0KLQkvKiBTdGVwIDRoOiBXcml0ZSBNRE1SUy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQlsZHIgICAgIHIyLCA9Q09ORklHX1NZU19NRE1SU19WQUwKLQlzdHIgICAgIHIyLCBbcjEsICNNRE1SU19PRkZTRVRdCi0KLQotCS8qIFdlIGFyZSBmaW5pc2hlZCB3aXRoIEludGVsJ3MgbWVtb3J5IGNvbnRyb2xsZXIgaW5pdGlhbGlzYXRpb24gICAgKi8KLQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIERpc2FibGUgKG1hc2spIGFsbCBpbnRlcnJ1cHRzIGF0IGludGVycnVwdCBjb250cm9sbGVyICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLWluaXRpcnFzOgotCi0JbW92ICAgICByMSwgIzAJCS8qIGNsZWFyIGludC4gbGV2ZWwgcmVnaXN0ZXIgKElSUSwgbm90IEZJUSkgKi8KLQlsZHIgICAgIHIyLCA9SUNMUgotCXN0ciAgICAgcjEsIFtyMl0KLQotCWxkciAgICAgcjIsID1JQ01SCS8qIG1hc2sgYWxsIGludGVycnVwdHMgYXQgdGhlIGNvbnRyb2xsZXIgICAgKi8KLQlzdHIgICAgIHIxLCBbcjJdCi0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBDbG9jayBpbml0aWFsaXNhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1pbml0Y2xrczoKLQotCS8qIERpc2FibGUgdGhlIHBlcmlwaGVyYWwgY2xvY2tzLCBhbmQgc2V0IHRoZSBjb3JlIGNsb2NrIGZyZXF1ZW5jeSAgKi8KLQotCS8qIFR1cm4gT2ZmIEFMTCBvbi1jaGlwIHBlcmlwaGVyYWwgY2xvY2tzIGZvciByZS1jb25maWd1cmF0aW9uICAgICAgKi8KLQkvKiBOb3RlOiBTZWUgbGFiZWwgJ0VOQUJMRUNMS1MnIGZvciB0aGUgcmUtZW5hYmxpbmcgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMSwgPUNLRU4KLQltb3YgICAgIHIyLCAjMAotCXN0ciAgICAgcjIsIFtyMV0KLQotCi0JLyogZGVmYXVsdCB2YWx1ZSBpbiBjYXNlIG5vIHZhbGlkIHJvdGFyeSBzd2l0Y2ggc2V0dGluZyBpcyBmb3VuZCAgICAqLwotCWxkciAgICAgcjIsID0oQ0NDUl9MMjd8Q0NDUl9NMnxDQ0NSX04xMCkgIC8qIERFRkFVTFQ6IHsyMDAvMjAwLzEwMH0gKi8KLQotCS8qIC4uLiBhbmQgd3JpdGUgdGhlIGNvcmUgY2xvY2sgY29uZmlnIHJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIxLCA9Q0NDUgotCXN0ciAgICAgcjIsIFtyMV0KLQotI2lmZGVmIFJUQwotCS8qIGVuYWJsZSB0aGUgMzJLaHogb3NjaWxsYXRvciBmb3IgUlRDIGFuZCBQb3dlck1hbmFnZXIgICAgICAgICAgICAgKi8KLQotCWxkciAgICAgcjEsID1PU0NDCi0JbW92ICAgICByMiwgI09TQ0NfT09OCi0Jc3RyICAgICByMiwgW3IxXQotCi0JLyogTk9URTogIHNwaW4gaGVyZSB1bnRpbCBPU0NDLk9PSyBnZXQgc2V0LCBtZWFuaW5nIHRoZSBQTEwgICAgICAgICAqLwotCS8qIGhhcyBzZXR0bGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLTYwOgotCWxkciAgICAgcjIsIFtyMV0KLQlhbmRzICAgIHIyLCByMiwgIzEKLQliZXEgICAgIDYwYgotI2VuZGlmCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIFNhdmUgU0RSQU0gc2l6ZSAqLwotCWxkciAgICAgcjEsID1EUkFNX1NJWkUKLQlzdHIJcjgsIFtyMV0KLQotCS8qIEludGVycnVwdCBpbml0OiBNYXNrIGFsbCBpbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIJcjAsID1JQ01SIC8qIGVuYWJsZSBubyBzb3VyY2VzICovCi0JbW92CXIxLCAjMAotCXN0cglyMSwgW3IwXQotCi0JLyogRklYTUUgKi8KLQotI2RlZmluZSBOT0RFQlVHCi0jaWZkZWYgTk9ERUJVRwotCS8qRGlzYWJsZSBzb2Z0d2FyZSBhbmQgZGF0YSBicmVha3BvaW50cyAqLwotCW1vdglyMCwjMAotCW1jcglwMTUsMCxyMCxjMTQsYzgsMCAgLyogaWJjcjAgKi8KLQltY3IJcDE1LDAscjAsYzE0LGM5LDAgIC8qIGliY3IxICovCi0JbWNyCXAxNSwwLHIwLGMxNCxjNCwwICAvKiBkYmNvbiAqLwotCi0JLypFbmFibGUgYWxsIGRlYnVnIGZ1bmN0aW9uYWxpdHkgKi8KLQltb3YJcjAsIzB4ODAwMDAwMDAKLQltY3IJcDE0LDAscjAsYzEwLGMwLDAgIC8qIGRjc3IgKi8KLQotI2VuZGlmCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogRW5kIGxvd2xldmVsX2luaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1lbmRsb3dsZXZlbF9pbml0OgotCi0JbW92ICAgICBwYywgbHIKZGlmZiAtLWdpdCBhL2JvYXJkL2NvbGlicmlfcHhhMjcwL01ha2VmaWxlIGIvYm9hcmQvY29saWJyaV9weGEyNzAvTWFrZWZpbGUKaW5kZXggYWU1NzBlMS4uZjhiNDRhYiAxMDA2NDQKLS0tIGEvYm9hcmQvY29saWJyaV9weGEyNzAvTWFrZWZpbGUKKysrIGIvYm9hcmQvY29saWJyaV9weGEyNzAvTWFrZWZpbGUKQEAgLTI0LDE3ICsyNCwxNSBAQAogTElCCT0gJChvYmopbGliJChCT0FSRCkuYQogCiBDT0JKUwk6PSBjb2xpYnJpX3B4YTI3MC5vCi1TT0JKUwk6PSBsb3dsZXZlbF9pbml0Lm8KIAotU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQorU1JDUwk6PSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCi1TT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCiAKLSQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQogCiBjbGVhbjoKLQlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCisJcm0gLWYgJChPQkpTKQogCiBkaXN0Y2xlYW46CWNsZWFuCiAJcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgJChvYmopLmRlcGVuZApkaWZmIC0tZ2l0IGEvYm9hcmQvY29saWJyaV9weGEyNzAvY29saWJyaV9weGEyNzAuYyBiL2JvYXJkL2NvbGlicmlfcHhhMjcwL2NvbGlicmlfcHhhMjcwLmMKaW5kZXggOGFhNzA2Ny4uMTkxZmIzMyAxMDA2NDQKLS0tIGEvYm9hcmQvY29saWJyaV9weGEyNzAvY29saWJyaV9weGEyNzAuYworKysgYi9ib2FyZC9jb2xpYnJpX3B4YTI3MC9jb2xpYnJpX3B4YTI3MC5jCkBAIC00Miw4ICs0Miw5IEBACiAKIGludCBib2FyZF9pbml0ICh2b2lkKQogewotCS8qIG1lbW9yeSBhbmQgY3B1LXNwZWVkIGFyZSBzZXR1cCBiZWZvcmUgcmVsb2NhdGlvbiAqLwotCS8qIHNvIHdlIGRvIF9ub3RoaW5nXyBoZXJlICovCisJLyogV2UgaGF2ZSBSQU0sIGRpc2FibGUgY2FjaGUgKi8KKwlkY2FjaGVfZGlzYWJsZSgpOworCWljYWNoZV9kaXNhYmxlKCk7CiAKIAkvKiBhcmNoIG51bWJlciBvZiB2cGFjMjcwICovCiAJZ2QtPmJkLT5iaV9hcmNoX251bWJlciA9IE1BQ0hfVFlQRV9DT0xJQlJJOwpAQCAtNTQsMTMgKzU1LDE4IEBACiAJcmV0dXJuIDA7CiB9CiAKLWludCBkcmFtX2luaXQgKHZvaWQpCitleHRlcm4gdm9pZCBweGFfZHJhbV9pbml0KHZvaWQpOworaW50IGRyYW1faW5pdCh2b2lkKQoreworCXB4YV9kcmFtX2luaXQoKTsKKwlnZC0+cmFtX3NpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBkcmFtX2luaXRfYmFua3NpemUodm9pZCkKIHsKIAlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBQSFlTX1NEUkFNXzE7Ci0KIAlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOwotCi0JcmV0dXJuIDA7CiB9CiAKICNpZmRlZglDT05GSUdfQ01EX1VTQgpkaWZmIC0tZ2l0IGEvYm9hcmQvY29saWJyaV9weGEyNzAvY29uZmlnLm1rIGIvYm9hcmQvY29saWJyaV9weGEyNzAvY29uZmlnLm1rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjEwNjYyLi4wMDAwMDAwCi0tLSBhL2JvYXJkL2NvbGlicmlfcHhhMjcwL2NvbmZpZy5taworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUNPTkZJR19TWVNfVEVYVF9CQVNFID0gMHhhMTAwMDAwMApkaWZmIC0tZ2l0IGEvYm9hcmQvY29saWJyaV9weGEyNzAvbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvY29saWJyaV9weGEyNzAvbG93bGV2ZWxfaW5pdC5TCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDNkYWMyLi4wMDAwMDAwCi0tLSBhL2JvYXJkL2NvbGlicmlfcHhhMjcwL2xvd2xldmVsX2luaXQuUworKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBUb3JhZGV4IENvbGlicmkgUFhBMjcwIExvd2xldmVsIEhhcmR3YXJlIEluaXRpYWxpemF0aW9uCi0gKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+Ci0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2luY2x1ZGUgPHZlcnNpb24uaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL21hY3JvLmg+Ci0KLS5nbG9ibCBsb3dsZXZlbF9pbml0Ci1sb3dsZXZlbF9pbml0OgotCXB4YV9ncGlvX3NldHVwCi0JcHhhX3dhaXRfdGlja3MJMHg4MDAwCi0JcHhhX21lbV9zZXR1cAotCXB4YV93YWtldXAKLQlweGFfaW50cl9zZXR1cAotCXB4YV9jbG9ja19zZXR1cAotCi0JbW92CXBjLCBscgpkaWZmIC0tZ2l0IGEvYm9hcmQvY3JhZGxlL01ha2VmaWxlIGIvYm9hcmQvY3JhZGxlL01ha2VmaWxlCmluZGV4IDFhZTc4NWQuLjcyMDU5M2MgMTAwNjQ0Ci0tLSBhL2JvYXJkL2NyYWRsZS9NYWtlZmlsZQorKysgYi9ib2FyZC9jcmFkbGUvTWFrZWZpbGUKQEAgLTI2LDE3ICsyNiwxNSBAQAogTElCCT0gJChvYmopbGliJChCT0FSRCkuYQogCiBDT0JKUwk6PSBjcmFkbGUubyBmbGFzaC5vCi1TT0JKUwk6PSBsb3dsZXZlbF9pbml0Lm8KIAotU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQorU1JDUwk6PSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCi1TT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCiAKLSQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQogCiBjbGVhbjoKLQlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCisJcm0gLWYgJChPQkpTKQogCiBkaXN0Y2xlYW46CWNsZWFuCiAJcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgJChvYmopLmRlcGVuZApkaWZmIC0tZ2l0IGEvYm9hcmQvY3JhZGxlL2NvbmZpZy5tayBiL2JvYXJkL2NyYWRsZS9jb25maWcubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2NTZiZGQuLjAwMDAwMDAKLS0tIGEvYm9hcmQvY3JhZGxlL2NvbmZpZy5taworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotQ09ORklHX1NZU19URVhUX0JBU0UgPSAweGEwZjgwMDAwCi0jQ09ORklHX1NZU19URVhUX0JBU0UgPSAwCmRpZmYgLS1naXQgYS9ib2FyZC9jcmFkbGUvY3JhZGxlLmMgYi9ib2FyZC9jcmFkbGUvY3JhZGxlLmMKaW5kZXggYzRhOTNmOS4uMmJiZjJkNSAxMDA2NDQKLS0tIGEvYm9hcmQvY3JhZGxlL2NyYWRsZS5jCisrKyBiL2JvYXJkL2NyYWRsZS9jcmFkbGUuYwpAQCAtMTg1LDYgKzE4NSwxMCBAQAogYm9hcmRfaW5pdCAodm9pZCkKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogeworCS8qIFdlIGhhdmUgUkFNLCBkaXNhYmxlIGNhY2hlICovCisJZGNhY2hlX2Rpc2FibGUoKTsKKwlpY2FjaGVfZGlzYWJsZSgpOworCiAJbGVkX2NvZGUgKDB4ZiwgWUVMTE9XKTsKIAogCS8qIGFyY2ggbnVtYmVyIG9mIEhIUCBDcmFkbGUgKi8KQEAgLTIwNiwyNCArMjEwLDE4IEBACiAJcmV0dXJuIDE7CiB9CiAKLWludAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1kcmFtX2luaXQgKHZvaWQpCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK2V4dGVybiB2b2lkIHB4YV9kcmFtX2luaXQodm9pZCk7CitpbnQgZHJhbV9pbml0KHZvaWQpCit7CisJcHhhX2RyYW1faW5pdCgpOworCWdkLT5yYW1fc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOworCXJldHVybiAwOworfQorCit2b2lkIGRyYW1faW5pdF9iYW5rc2l6ZSh2b2lkKQogewogCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKLQlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSAgPSBQSFlTX1NEUkFNXzFfU0laRTsKLQlnZC0+YmQtPmJpX2RyYW1bMV0uc3RhcnQgPSBQSFlTX1NEUkFNXzI7Ci0JZ2QtPmJkLT5iaV9kcmFtWzFdLnNpemUgID0gUEhZU19TRFJBTV8yX1NJWkU7Ci0JZ2QtPmJkLT5iaV9kcmFtWzJdLnN0YXJ0ID0gUEhZU19TRFJBTV8zOwotCWdkLT5iZC0+YmlfZHJhbVsyXS5zaXplICA9IFBIWVNfU0RSQU1fM19TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVszXS5zdGFydCA9IFBIWVNfU0RSQU1fNDsKLQlnZC0+YmQtPmJpX2RyYW1bM10uc2l6ZSAgPSBQSFlTX1NEUkFNXzRfU0laRTsKLQotCXJldHVybiAoUEhZU19TRFJBTV8xX1NJWkUgKwotCQlQSFlTX1NEUkFNXzJfU0laRSArCi0JCVBIWVNfU0RSQU1fM19TSVpFICsKLQkJUEhZU19TRFJBTV80X1NJWkUgKTsKKwlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOwogfQogCiAjaWZkZWYgQ09ORklHX0NNRF9ORVQKZGlmZiAtLWdpdCBhL2JvYXJkL2NyYWRsZS9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9jcmFkbGUvbG93bGV2ZWxfaW5pdC5TCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTk2NGI2Li4wMDAwMDAwCi0tLSBhL2JvYXJkL2NyYWRsZS9sb3dsZXZlbF9pbml0LlMKKysrIC9kZXYvbnVsbApAQCAtMSw1MTUgKzAsMCBAQAotLyoKLSAqIE1vc3Qgb2YgdGhpcyB0YWtlbiBmcm9tIFJlZGJvb3QgaGFsX3BsYXRmb3JtX3NldHVwLmggd2l0aCBjbGVhbnVwCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2luY2x1ZGUgPHZlcnNpb24uaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgotCi1EUkFNX1NJWkU6ICAubG9uZyAgIENPTkZJR19TWVNfRFJBTV9TSVpFCi0KLS8qIHdhaXQgZm9yIGNvcHJvY2Vzc29yIHdyaXRlIGNvbXBsZXRlICovCi0gICAubWFjcm8gQ1BXQUlUIHJlZwotICAgbXJjICBwMTUsMCxccmVnLGMyLGMwLDAKLSAgIG1vdiAgXHJlZyxccmVnCi0gICBzdWIgIHBjLHBjLCM0Ci0gICAuZW5kbQotCi0gICAubWFjcm8gU0VUX0xFRCB2YWwKLSAgIGxkciAgIHI2LCA9R1BDUjIKLSAgIGxkciAgIHI3LCA9MAotICAgc3RyICAgcjcsIFtyNl0KLSAgIGxkciAgIHI2LCA9R1BTUjIKLSAgIGxkciAgIHI3LCA9XHZhbAotICAgc3RyICAgcjcsIFtyNl0KLSAgIC5lbmRtCi0KLQotLmdsb2JsIGxvd2xldmVsX2luaXQKLWxvd2xldmVsX2luaXQ6Ci0KLSAgICBtb3YgICAgICByMTAsIGxyCi0KLSAgICAvKiBTZXQgdXAgR1BJTyBwaW5zIGZpcnN0ICovCi0KLSAgIGxkciAgICAgIHIwLCAgID1HUFNSMAotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BTUjBfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HUFNSMQotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BTUjFfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HUFNSMgotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BTUjJfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HUENSMAotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BDUjBfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HUENSMQotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BDUjFfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HUENSMgotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BDUjJfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HUkVSMAotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1JFUjBfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HUkVSMQotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1JFUjFfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HUkVSMgotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1JFUjJfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HRkVSMAotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR0ZFUjBfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HRkVSMQotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR0ZFUjFfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HRkVSMgotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR0ZFUjJfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HUERSMAotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BEUjBfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HUERSMQotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BEUjFfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HUERSMgotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BEUjJfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HQUZSMF9MCi0gICBsZHIgICAgICByMSwgICA9Q09ORklHX1NZU19HQUZSMF9MX1ZBTAotICAgc3RyICAgICAgcjEsICAgW3IwXQotCi0gICBsZHIgICAgICByMCwgICA9R0FGUjBfVQotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR0FGUjBfVV9WQUwKLSAgIHN0ciAgICAgIHIxLCAgIFtyMF0KLQotICAgbGRyICAgICAgcjAsICAgPUdBRlIxX0wKLSAgIGxkciAgICAgIHIxLCAgID1DT05GSUdfU1lTX0dBRlIxX0xfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIGxkciAgICAgIHIwLCAgID1HQUZSMV9VCi0gICBsZHIgICAgICByMSwgICA9Q09ORklHX1NZU19HQUZSMV9VX1ZBTAotICAgc3RyICAgICAgcjEsICAgW3IwXQotCi0gICBsZHIgICAgICByMCwgICA9R0FGUjJfTAotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR0FGUjJfTF9WQUwKLSAgIHN0ciAgICAgIHIxLCAgIFtyMF0KLQotICAgbGRyICAgICAgcjAsICAgPUdBRlIyX1UKLSAgIGxkciAgICAgIHIxLCAgID1DT05GSUdfU1lTX0dBRlIyX1VfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIC8qIGVuYWJsZSBHUElPIHBpbnMgKi8KLSAgIGxkciAgICAgIHIwLCAgID1QU1NSCi0gICBsZHIgICAgICByMSwgICA9Q09ORklHX1NZU19QU1NSX1ZBTAotICAgc3RyICAgICAgcjEsICAgW3IwXQotCi0gICBTRVRfTEVEIDEKLQotICAgbGRyICAgIHIzLCA9TVNDMSAgICAgICAgICAgICAvKiBsb3cgLSBiYW5rIDIgTHViYm9jayBSZWdpc3RlcnMgLyBTUkFNICovCi0gICBsZHIgICAgcjIsID1DT05GSUdfU1lTX01TQzFfVkFMICAgICAvKiBoaWdoIC0gYmFuayAzIEV0aGVybmV0IENvbnRyb2xsZXIgKi8KLSAgIHN0ciAgICByMiwgW3IzXSAgICAgICAgICAgICAgLyogbmVlZCB0byBzZXQgTVNDMSBiZWZvcmUgdHJ5aW5nIHRvIHdyaXRlIHRvIHRoZSBIRVggTEVEcyAqLwotICAgbGRyICAgIHIyLCBbcjNdICAgICAgICAgICAgICAvKiBuZWVkIHRvIHJlYWQgaXQgYmFjayB0byBtYWtlIHN1cmUgdGhlIHZhbHVlIGxhdGNoZXMgKHNlZSBNU0Mgc2VjdGlvbiBvZiBtYW51YWwpICovCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgIEluaXRsaWFsaXplIE1lbW9yeSBDb250cm9sbGVyCi0KLSAgICBTZWUgUFhBMjUwIE9wZXJhdGluZyBTeXN0ZW0gRGV2ZWxvcGVyJ3MgR3VpZGUKLQotICAgIHBhdXNlIGZvciAyMDAgdVNlY3MtIGFsbG93IGludGVybmFsIGNsb2NrcyB0byBzZXR0bGUKLSAgICAqTm90ZTogb25seSBuZWVkIHRoaXMgaWYgaGFyZCByZXNldC4uLiBkb2luZyBpdCBhbnl3YXkgZm9yIG5vdwotKi8KLQotICAgIEAgU3RlcCAxCi0gICBAIC0tLS0gV2FpdCAyMDAgdXNlYwotICAgbGRyIHIzLCA9T1NDUiAgICAgICBAIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvCi0gICBtb3YgcjIsICMwCi0gICBzdHIgcjIsIFtyM10KLSAgIGxkciByNCwgPTB4MzAwICAgICAgICAgQCByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eQotMToKLSAgIGxkciByMiwgW3IzXQotICAgY21wIHI0LCByMgotICAgYmd0IDFiCi0KLSAgIFNFVF9MRUQgMgotCi1tZW1faW5pdDoKLQlAIGdldCBtZW1vcnkgY29udHJvbGxlciBiYXNlIGFkZHJlc3MKLQlsZHIgICAgIHIxLCAgPU1FTUNfQkFTRQotCi0KLUAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1AICBTdGVwIDIKLUAKLQotICAgQCBTdGVwIDJhCi0gICBAIHdyaXRlIG1zYzAsIHJlYWQgYmFjayB0byBlbnN1cmUgZGF0YSBsYXRjaGVzCi0gICBACi0gICBsZHIgICAgIHIyLCAgID1DT05GSUdfU1lTX01TQzBfVkFMCi0gICBzdHIgICAgIHIyLCAgIFtyMSwgI01TQzBfT0ZGU0VUXQotICAgbGRyICAgICByMiwgICBbcjEsICNNU0MwX09GRlNFVF0KLQotICAgQCB3cml0ZSBtc2MxCi0gICBsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTVNDMV9WQUwKLSAgIHN0ciAgICAgcjIsICBbcjEsICNNU0MxX09GRlNFVF0KLSAgIGxkciAgICAgcjIsICBbcjEsICNNU0MxX09GRlNFVF0KLQotICAgQCB3cml0ZSBtc2MyCi0gICBsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTVNDMl9WQUwKLSAgIHN0ciAgICAgcjIsICBbcjEsICNNU0MyX09GRlNFVF0KLSAgIGxkciAgICAgcjIsICBbcjEsICNNU0MyX09GRlNFVF0KLQotICAgQCBTdGVwIDJiCi0gICBAIHdyaXRlIG1lY3IKLSAgIGxkciAgICAgcjIsICA9Q09ORklHX1NZU19NRUNSX1ZBTAotICAgc3RyICAgICByMiwgIFtyMSwgI01FQ1JfT0ZGU0VUXQotCi0gICBAIHdyaXRlIG1jbWVtMAotICAgbGRyICAgICByMiwgID1DT05GSUdfU1lTX01DTUVNMF9WQUwKLSAgIHN0ciAgICAgcjIsICBbcjEsICNNQ01FTTBfT0ZGU0VUXQotCi0gICBAIHdyaXRlIG1jbWVtMQotICAgbGRyICAgICByMiwgID1DT05GSUdfU1lTX01DTUVNMV9WQUwKLSAgIHN0ciAgICAgcjIsICBbcjEsICNNQ01FTTFfT0ZGU0VUXQotCi0gICBAIHdyaXRlIG1jYXR0MAotICAgbGRyICAgICByMiwgID1DT05GSUdfU1lTX01DQVRUMF9WQUwKLSAgIHN0ciAgICAgcjIsICBbcjEsICNNQ0FUVDBfT0ZGU0VUXQotCi0gICBAIHdyaXRlIG1jYXR0MQotICAgbGRyICAgICByMiwgID1DT05GSUdfU1lTX01DQVRUMV9WQUwKLSAgIHN0ciAgICAgcjIsICBbcjEsICNNQ0FUVDFfT0ZGU0VUXQotCi0gICBAIHdyaXRlIG1jaW8wCi0gICBsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTUNJTzBfVkFMCi0gICBzdHIgICAgIHIyLCAgW3IxLCAjTUNJTzBfT0ZGU0VUXQotCi0gICBAIHdyaXRlIG1jaW8xCi0gICBsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTUNJTzFfVkFMCi0gICBzdHIgICAgIHIyLCAgW3IxLCAjTUNJTzFfT0ZGU0VUXQotCi0gICAvKlNFVF9MRUQgMyAqLwotCi0gICBAIFN0ZXAgMmMKLSAgIEAgZmx5LWJ5LWRtYSBpcyBkZWZlYXR1cmVkIG9uIHRoaXMgcGFydAotICAgQCB3cml0ZSBmbHljbmZnCi0gICBAbGRyICAgICByMiwgID1DT05GSUdfU1lTX0ZMWUNORkdfVkFMCi0gICBAc3RyICAgICByMiwgIFtyMSwgI0ZMWUNORkdfT0ZGU0VUXQotCi0vKiBGSVhNRSBEb2VzIHRoaXMgc2VxdWVuY2UgcmVhbGx5IG1ha2Ugc2Vuc2UgKi8KLSNpZmRlZiBSRURCT09UX1dBWQotICAgQCBTdGVwIDJkCi0gICBAIGdldCB0aGUgbWRyZWZyIHNldHRpbmdzCi0gICBsZHIgICAgIHIzLCAgPUNPTkZJR19TWVNfTURSRUZSX1ZBTAotCi0gICBAIGV4dHJhY3QgRFJJIGZpZWxkICh3ZSBuZWVkIGEgdmFsaWQgRFJJIGZpZWxkKQotICAgQAotICAgbGRyICAgICByMiwgID0weEZGRgotCi0gICBAIHZhbGlkIERSSSBmaWVsZCBpbiByMwotICAgQAotICAgYW5kICAgICByMywgIHIzLCAgcjIKLQotICAgQCBnZXQgdGhlIHJlc2V0IHN0YXRlIG9mIE1EUkVGUgotICAgQAotICAgbGRyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLSAgIEAgY2xlYXIgdGhlIERSSSBmaWVsZAotICAgQAotICAgYmljICAgICByNCwgIHI0LCAgcjIKLQotICAgQCBpbnNlcnQgdGhlIHZhbGlkIERSSSBmaWVsZCBsb2FkZWQgYWJvdmUKLSAgIEAKLSAgIG9yciAgICAgcjQsICByNCwgIHIzCi0KLSAgIEAgd3JpdGUgYmFjayBtZHJlZnIKLSAgIEAKLSAgIHN0ciAgICAgcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0gICBAICpOb3RlOiBwcmVzZXJ2ZSB0aGUgbWRyZWZyIHZhbHVlIGluIHI0ICoKLQotICAgLypTRVRfTEVEIDQgKi8KLQotQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUAgIFN0ZXAgMwotQAotQCBOTyBTUkFNCi0KLSAgIG1vdiAgIHBjLCByMTAKLQotCi1AKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotQCAgU3RlcCA0Ci1ACi0KLSAgIEAgQXNzdW1lcyBwcmV2aW91cyBtZHJlZnIgdmFsdWUgaW4gcjQsIGlmIG5vdCB0aGVuIHJlYWQgY3VycmVudCBtZHJlZnIKLQotICAgQCBjbGVhciB0aGUgZnJlZS1ydW5uaW5nIGNsb2NrIGJpdHMKLSAgIEAgKGNsZWFyIEswRnJlZSwgSzFGcmVlLCBLMkZyZWUKLSAgIEAKLSAgIGJpYyAgICAgcjQsICByNCwgICMoMHgwMDgwMDAwMCB8IDB4MDEwMDAwMDAgfCAweDAyMDAwMDAwKQotCi0gICBAIHNldCBLMFJVTiBmb3IgQ1BMRCBjbG9jawotICAgQAotICAgb3JyICAgcjQsICByNCwgICMweDAwMDAyMDAwCi0KLSAgIEAgc2V0IEsxUlVOIGlmIGJhbmsgMCBpbnN0YWxsZWQKLSAgIEAKLSAgIG9yciAgIHI0LCAgcjQsICAjMHgwMDAxMDAwMAotCi0gICBAIHdyaXRlIGJhY2sgbWRyZWZyCi0gICBACi0gICBzdHIgICAgIHI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLSAgIGxkciAgICAgcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0gICBAIGRlYXNzZXJ0IFNMRlJTSAotICAgQAotICAgYmljICAgICByNCwgIHI0LCAgIzB4MDA0MDAwMDAKLQotICAgQCB3cml0ZSBiYWNrIG1kcmVmcgotICAgQAotICAgc3RyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLSAgIEAgYXNzZXJ0IEUxUElOCi0gICBACi0gICBvcnIgICAgIHI0LCAgcjQsICAjMHgwMDAwODAwMAotCi0gICBAIHdyaXRlIGJhY2sgbWRyZWZyCi0gICBACi0gICBzdHIgICAgIHI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLSAgIGxkciAgICAgcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotICAgbm9wCi0gICBub3AKLSNlbHNlCi0gICBAIFN0ZXAgMmQKLSAgIEAgZ2V0IHRoZSBtZHJlZnIgc2V0dGluZ3MKLSAgIGxkciAgICAgcjMsICA9Q09ORklHX1NZU19NRFJFRlJfVkFMCi0KLSAgIEAgd3JpdGUgYmFjayBtZHJlZnIKLSAgIEAKLSAgIHN0ciAgICAgcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0gICBAICBTdGVwIDQKLQotICAgQCBzZXQgSzBSVU4gZm9yIENQTEQgY2xvY2sKLSAgIEAKLSAgIG9yciAgIHI0LCAgcjQsICAjMHgwMDAwMjAwMAotCi0gICBAIHNldCBLMVJVTiBmb3IgYmFuayAwCi0gICBACi0gICBvcnIgICByNCwgIHI0LCAgIzB4MDAwMTAwMDAKLQotICAgQCB3cml0ZSBiYWNrIG1kcmVmcgotICAgQAotICAgc3RyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0gICBsZHIgICAgIHI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotICAgQCBkZWFzc2VydCBTTEZSU0gKLSAgIEAKLSAgIGJpYyAgICAgcjQsICByNCwgICMweDAwNDAwMDAwCi0KLSAgIEAgd3JpdGUgYmFjayBtZHJlZnIKLSAgIEAKLSAgIHN0ciAgICAgcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0gICBAIGFzc2VydCBFMVBJTgotICAgQAotICAgb3JyICAgICByNCwgIHI0LCAgIzB4MDAwMDgwMDAKLQotICAgQCB3cml0ZSBiYWNrIG1kcmVmcgotICAgQAotICAgc3RyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0gICBsZHIgICAgIHI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLSAgIG5vcAotICAgbm9wCi0jZW5kaWYKLQotICAgQCBTdGVwIDRkCi0gICBAIGZldGNoIHBsYXRmb3JtIHZhbHVlIG9mIG1kY25mZwotICAgQAotICAgbGRyICAgICByMiwgID1DT05GSUdfU1lTX01EQ05GR19WQUwKLQotICAgQCBkaXNhYmxlIGFsbCBzZHJhbSBiYW5rcwotICAgQAotICAgYmljICAgICByMiwgIHIyLCAgIyhNRENORkdfREUwIHwgTURDTkZHX0RFMSkKLSAgIGJpYyAgICAgcjIsICByMiwgICMoTURDTkZHX0RFMiB8IE1EQ05GR19ERTMpCi0KLSAgIEAgcHJvZ3JhbSBiYW5rcyAwLzEgZm9yIGJ1cyB3aWR0aAotICAgQAotICAgYmljICAgcjIsICByMiwgICNNRENORkdfRFdJRDAgICAgICBAMD0zMi1iaXQKLQotICAgQCB3cml0ZSBpbml0aWFsIHZhbHVlIG9mIG1kY25mZywgdy9vIGVuYWJsaW5nIHNkcmFtIGJhbmtzCi0gICBACi0gICBzdHIgICAgIHIyLCAgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotICAgQCBTdGVwIDRlCi0gICBAIHBhdXNlIGZvciAyMDAgdVNlY3MKLSAgIEAKLSAgIGxkciByMywgPU9TQ1IgICAgICAgQCByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybwotICAgbW92IHIyLCAjMAotICAgc3RyIHIyLCBbcjNdCi0gICBsZHIgcjQsID0weDMwMAkJCUAgcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsIHNvIDB4MzAwIHNob3VsZCBiZSBwbGVudHkKLTE6Ci0gICBsZHIgcjIsIFtyM10KLSAgIGNtcCByNCwgcjIKLSAgIGJndCAxYgotCi0gICAvKlNFVF9MRUQgNSAqLwotCi0gICAvKiBXaHkgaXMgdGhpcyBoZXJlPz8/ICovCi0gICBtb3YgICAgcjAsICMweDc4ICAgICAgICAgICAgICAgIEB0dXJuIGV2ZXJ5dGhpbmcgb2ZmCi0gICBtY3IgICAgcDE1LCAwLCByMCwgYzEsIGMwLCAwICAgICAgQChjYWNoZXMgb2ZmLCBNTVUgb2ZmLCBldGMuKQotCi0gICBAIFN0ZXAgNGYKLSAgIEAgQWNjZXNzIG1lbW9yeSAqbm90IHlldCBlbmFibGVkKiBmb3IgQ0JSIHJlZnJlc2ggY3ljbGVzICg4KQotICAgQCAtIENCUiBpcyBnZW5lcmF0ZWQgZm9yIGFsbCBiYW5rcwotCi0gICBsZHIgICAgIHIyLCA9Q09ORklHX1NZU19EUkFNX0JBU0UKLSAgIHN0ciAgICAgcjIsIFtyMl0KLSAgIHN0ciAgICAgcjIsIFtyMl0KLSAgIHN0ciAgICAgcjIsIFtyMl0KLSAgIHN0ciAgICAgcjIsIFtyMl0KLSAgIHN0ciAgICAgcjIsIFtyMl0KLSAgIHN0ciAgICAgcjIsIFtyMl0KLSAgIHN0ciAgICAgcjIsIFtyMl0KLSAgIHN0ciAgICAgcjIsIFtyMl0KLQotICAgQCBTdGVwIDRnCi0gICBAZ2V0IG1lbW9yeSBjb250cm9sbGVyIGJhc2UgYWRkcmVzcwotICAgQAotICAgbGRyICAgICByMSwgID1NRU1DX0JBU0UKLQotICAgQGZldGNoIGN1cnJlbnQgbWRjbmZnIHZhbHVlCi0gICBACi0gICBsZHIgICAgIHIzLCAgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotICAgQGVuYWJsZSBzZHJhbSBiYW5rIDAgaWYgaW5zdGFsbGVkIChtdXN0IGRvIGZvciBhbnkgcG9wdWxhdGVkIGJhbmspCi0gICBACi0gICBvcnIgICAgIHIzLCAgcjMsICAjTURDTkZHX0RFMAotCi0gICBAd3JpdGUgYmFjayBtZGNuZmcsIGVuYWJsaW5nIHRoZSBzZHJhbSBiYW5rKHMpCi0gICBACi0gICBzdHIgICAgIHIzLCAgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotICAgQCBTdGVwIDRoCi0gICBAIHdyaXRlIG1kbXJzCi0gICBACi0gICBsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTURNUlNfVkFMCi0gICBzdHIgICAgIHIyLCAgW3IxLCAjTURNUlNfT0ZGU0VUXQotCi0gICBAIERvbmUgTWVtb3J5IEluaXQKLQotICAgLypTRVRfTEVEIDYgKi8KLQotICAgQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICBAIERpc2FibGUgKG1hc2spIGFsbCBpbnRlcnJ1cHRzIGF0IHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgotICAgQAotCi0gICBAIGNsZWFyIHRoZSBpbnRlcnJ1cHQgbGV2ZWwgcmVnaXN0ZXIgKHVzZSBJUlEsIG5vdCBGSVEpCi0gICBACi0gICBtb3YgICAgIHIxLCAjMAotICAgbGRyICAgICByMiwgID1JQ0xSCi0gICBzdHIgICAgIHIxLCAgW3IyXQotCi0gICBAIFNldCBpbnRlcnJ1cHQgbWFzayByZWdpc3RlcgotICAgQAotICAgbGRyICAgICByMSwgID1DT05GSUdfU1lTX0lDTVJfVkFMCi0gICBsZHIgICAgIHIyLCAgPUlDTVIKLSAgIHN0ciAgICAgcjEsICBbcjJdCi0KLSAgIEAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgIEAgRGlzYWJsZSB0aGUgcGVyaXBoZXJhbCBjbG9ja3MsIGFuZCBzZXQgdGhlIGNvcmUgY2xvY2sKLSAgIEAKLQotCUAgVHVybiBPZmYgQUxMIG9uLWNoaXAgcGVyaXBoZXJhbCBjbG9ja3MgZm9yIHJlLWNvbmZpZ3VyYXRpb24KLQlACi0gICBsZHIgICAgIHIxLCAgPUNLRU4KLSAgIG1vdiAgICAgcjIsICAjMAotICAgc3RyICAgICByMiwgIFtyMV0KLQotICAgQCBzZXQgY29yZSBjbG9ja3MKLSAgIEAKLSAgIGxkciAgICAgcjIsICA9Q09ORklHX1NZU19DQ0NSX1ZBTAotICAgbGRyICAgICByMSwgID1DQ0NSCi0gICBzdHIgICAgIHIyLCAgW3IxXQotCi0jaWZkZWYgRU5BQkxFMzJLSFoKLSAgIEAgZW5hYmxlIHRoZSAzMktoeiBvc2NpbGxhdG9yIGZvciBSVEMgYW5kIFBvd2VyTWFuYWdlcgotICAgQAotICAgbGRyICAgICByMSwgID1PU0NDCi0gICBtb3YgICAgIHIyLCAgI09TQ0NfT09OCi0gICBzdHIgICAgIHIyLCAgW3IxXQotCi0gICBAIE5PVEU6ICBzcGluIGhlcmUgdW50aWwgT1NDQy5PT0sgZ2V0IHNldCwKLSAgIEAgICAgICAgIG1lYW5pbmcgdGhlIFBMTCBoYXMgc2V0dGxlZC4KLSAgIEAKLTYwOgotICAgbGRyICAgICByMiwgW3IxXQotICAgYW5kcyAgICByMiwgcjIsICMxCi0gICBiZXEgICAgIDYwYgotI2VuZGlmCi0KLQlAIFR1cm4gb24gbmVlZGVkIGNsb2NrcwotCUAKLSAgIGxkciAgICAgcjEsICA9Q0tFTgotICAgbGRyICAgICByMiwgID1DT05GSUdfU1lTX0NLRU5fVkFMCi0gICBzdHIgICAgIHIyLCAgW3IxXQotCi0gICAvKlNFVF9MRUQgNyAqLwotCi0vKiBJcyB0aGlzIG5lZWRlZD8/Pz8gKi8KLSNkZWZpbmUgTk9ERUJVRwotI2lmZGVmIE5PREVCVUcKLSAgIC8qRGlzYWJsZSBzb2Z0d2FyZSBhbmQgZGF0YSBicmVha3BvaW50cyAqLwotICAgbW92ICAgcjAsIzAKLSAgIG1jciAgIHAxNSwwLHIwLGMxNCxjOCwwICAvKiBpYmNyMCAqLwotICAgbWNyICAgcDE1LDAscjAsYzE0LGM5LDAgIC8qIGliY3IxICovCi0gICBtY3IgICBwMTUsMCxyMCxjMTQsYzQsMCAgLyogZGJjb24gKi8KLQotICAgLypFbmFibGUgYWxsIGRlYnVnIGZ1bmN0aW9uYWxpdHkgKi8KLSAgIG1vdiAgIHIwLCMweDgwMDAwMDAwCi0gICBtY3IgICBwMTQsMCxyMCxjMTAsYzAsMCAgLyogZGNzciAqLwotCi0jZW5kaWYKLQotICAgLypTRVRfTEVEIDggKi8KLQotICAgbW92ICAgcGMsIHIxMAotCi1AIEVuZCBsb3dsZXZlbF9pbml0CmRpZmYgLS1naXQgYS9ib2FyZC9jc2IyMjYvTWFrZWZpbGUgYi9ib2FyZC9jc2IyMjYvTWFrZWZpbGUKaW5kZXggYzEyZGJlYS4uNWUxMzMyYiAxMDA2NDQKLS0tIGEvYm9hcmQvY3NiMjI2L01ha2VmaWxlCisrKyBiL2JvYXJkL2NzYjIyNi9NYWtlZmlsZQpAQCAtMjYsMTcgKzI2LDE1IEBACiBMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCiAKIENPQkpTCTo9IGNzYjIyNi5vIGZsYXNoLm8KLVNPQkpTCTo9IGxvd2xldmVsX2luaXQubwogCi1TUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCitTUkNTCTo9ICQoQ09CSlM6Lm89LmMpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKLVNPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKIAotJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChTT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAKIGNsZWFuOgotCXJtIC1mICQoU09CSlMpICQoT0JKUykKKwlybSAtZiAkKE9CSlMpCiAKIGRpc3RjbGVhbjoJY2xlYW4KIAlybSAtZiAkKExJQikgY29yZSAqLmJhayAkKG9iaikuZGVwZW5kCmRpZmYgLS1naXQgYS9ib2FyZC9jc2IyMjYvY29uZmlnLm1rIGIvYm9hcmQvY3NiMjI2L2NvbmZpZy5tawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU0NjU1NS4uMDAwMDAwMAotLS0gYS9ib2FyZC9jc2IyMjYvY29uZmlnLm1rCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotIwotIyBMaW51eC1LZXJuZWwgaXMgZXhwZWN0ZWQgdG8gYmUgYXQgYzAwMCc4MDAwLCBlbnRyeSBjMDAwJzgwMDAKLSMKLSMgd2UgbG9hZCBvdXJzZWxmIHRvIGMxNzAnMDAwMCwgdGhlIHVwcGVyIDEgTUIgb2Ygc2Vjb25kIGJhbmsKLSMKLSMgZG93bmxvYWQgYXJlYXMgaXMgYzgwMCcwMDAwCi0jCi0KLSMgVGhpcyBpcyB0aGUgYWRkcmVzcyB3aGVyZSBVLUJvb3QgbGl2ZXMgaW4gZmxhc2g6Ci0jQ09ORklHX1NZU19URVhUX0JBU0UgPSAwCi0KLSMgRklYTUU6IGFybWJvb3QgZG9lcyBvbmx5IHdvcmsgY29ycmVjdGx5IHdoZW4gYmVpbmcgY29tcGlsZWQKLSMgZm9yIHRoZSBhZGRyZXNzZXMgX2FmdGVyXyByZWxvY2F0aW9uIHRvIFJBTSEhIE90aGVyd2hpc2UgdGhlCi0jIC5ic3Mgc2VnbWVudCBpcyBhc3N1bWVkIGluIGZsYXNoLi4uCi1DT05GSUdfU1lTX1RFWFRfQkFTRSA9IDB4YTFmZTAwMDAKZGlmZiAtLWdpdCBhL2JvYXJkL2NzYjIyNi9jc2IyMjYuYyBiL2JvYXJkL2NzYjIyNi9jc2IyMjYuYwppbmRleCA2ZWVkOWFkLi5kZDI5ZTYyIDEwMDY0NAotLS0gYS9ib2FyZC9jc2IyMjYvY3NiMjI2LmMKKysrIGIvYm9hcmQvY3NiMjI2L2NzYjIyNi5jCkBAIC02OSw4ICs2OSw5IEBACiAKIGludCBib2FyZF9pbml0ICh2b2lkKQogewotCS8qIG1lbW9yeSBhbmQgY3B1LXNwZWVkIGFyZSBzZXR1cCBiZWZvcmUgcmVsb2NhdGlvbiAqLwotCS8qIHNvIHdlIGRvIF9ub3RoaW5nXyBoZXJlICovCisJLyogV2UgaGF2ZSBSQU0sIGRpc2FibGUgY2FjaGUgKi8KKwlkY2FjaGVfZGlzYWJsZSgpOworCWljYWNoZV9kaXNhYmxlKCk7CiAKIAkvKiBhcmNoIG51bWJlciBvZiBDU0IyMjYgYm9hcmQgKi8KIAlnZC0+YmQtPmJpX2FyY2hfbnVtYmVyID0gTUFDSF9UWVBFX0NTQjIyNjsKQEAgLTgyLDIwICs4MywxOSBAQAogfQogCiAKLS8qKgotICogZHJhbV9pbml0OiAtIHNldHVwIGR5bmFtaWMgUkFNCi0gKgotICogQHJldHVybjogMCBpbiBjYXNlIG9mIHN1Y2Nlc3MKLSAqLwotCi1pbnQgZHJhbV9pbml0ICh2b2lkKQorZXh0ZXJuIHZvaWQgcHhhX2RyYW1faW5pdCh2b2lkKTsKK2ludCBkcmFtX2luaXQodm9pZCkKIHsKLQlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBQSFlTX1NEUkFNXzE7Ci0JZ2QtPmJkLT5iaV9kcmFtWzBdLnNpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKLQorCXB4YV9kcmFtX2luaXQoKTsKKwlnZC0+cmFtX3NpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKIAlyZXR1cm4gMDsKIH0KIAordm9pZCBkcmFtX2luaXRfYmFua3NpemUodm9pZCkKK3sKKwlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBQSFlTX1NEUkFNXzE7CisJZ2QtPmJkLT5iaV9kcmFtWzBdLnNpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKK30KIAogLyoqCiAgKiBjc2IyMjZfc2V0X2xlZDogLSBzd2l0Y2ggTEVEcyBvbiBvciBvZmYKZGlmZiAtLWdpdCBhL2JvYXJkL2NzYjIyNi9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9jc2IyMjYvbG93bGV2ZWxfaW5pdC5TCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTE2OWJlLi4wMDAwMDAwCi0tLSBhL2JvYXJkL2NzYjIyNi9sb3dsZXZlbF9pbml0LlMKKysrIC9kZXYvbnVsbApAQCAtMSw0MzcgKzAsMCBAQAotLyoKLSAqIE1vc3Qgb2YgdGhpcyB0YWtlbiBmcm9tIFJlZGJvb3QgaGFsX3BsYXRmb3JtX3NldHVwLmggd2l0aCBjbGVhbnVwCi0gKgotICogTk9URTogSSBoYXZlbid0IGNsZWFuIHRoaXMgdXAgY29uc2lkZXJhYmx5LCBqdXN0IGVub3VnaCB0byBnZXQgaXQKLSAqIHJ1bm5pbmcuIFNlZSBoYWxfcGxhdGZvcm1fc2V0dXAuaCBmb3IgdGhlIHNvdXJjZS4gU2VlCi0gKiBib2FyZC9jcmFkbGUvbG93bGV2ZWxfaW5pdC5TIGZvciBhbm90aGVyIFBYQTI1MCBzZXR1cCB0aGF0IGlzCi0gKiBtdWNoIGNsZWFuZXIuCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2luY2x1ZGUgPHZlcnNpb24uaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgotCi1EUkFNX1NJWkU6ICAubG9uZyAgIENPTkZJR19TWVNfRFJBTV9TSVpFCi0KLS8qIHdhaXQgZm9yIGNvcHJvY2Vzc29yIHdyaXRlIGNvbXBsZXRlICovCi0gICAubWFjcm8gQ1BXQUlUIHJlZwotICAgbXJjICBwMTUsMCxccmVnLGMyLGMwLDAKLSAgIG1vdiAgXHJlZyxccmVnCi0gICBzdWIgIHBjLHBjLCM0Ci0gICAuZW5kbQotCi1fVEVYVF9CQVNFOgotCS53b3JkCUNPTkZJR19TWVNfVEVYVF9CQVNFCi0KLQotLyoKLSAqCU1lbW9yeSBzZXR1cAotICovCi0KLS5nbG9ibCBsb3dsZXZlbF9pbml0Ci1sb3dsZXZlbF9pbml0OgotCi0gICAgbW92ICAgICAgcjEwLCBscgotCi0JLyogU2V0IHVwIEdQSU8gcGlucyBmaXJzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JbGRyCQlyMCwJPUdQU1IwCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BTUjBfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BTUjEKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUFNSMV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUFNSMgotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQU1IyX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQQ1IwCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BDUjBfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BDUjEKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUENSMV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUENSMgotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQQ1IyX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQRFIwCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BEUjBfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BEUjEKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUERSMV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUERSMgotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQRFIyX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIwX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMF9MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIwX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMF9VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIxX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMV9MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIxX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMV9VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIyX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMl9MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIyX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMl9VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCXIwLAk9UFNTUgkJLyogZW5hYmxlIEdQSU8gcGlucyAqLwotCWxkcgkJcjEsCT1DT05GSUdfU1lTX1BTU1JfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLS8qCWxkcglyMywJPU1TQzEJCS8gIGxvdyAtIGJhbmsgMiBMdWJib2NrIFJlZ2lzdGVycyAvIFNSQU0gKi8KLS8qCWxkcglyMiwJPUNPTkZJR19TWVNfTVNDMV9WQUwJLyAgaGlnaCAtIGJhbmsgMyBFdGhlcm5ldCBDb250cm9sbGVyICovCi0vKglzdHIJcjIsCVtyM10JCS8gIG5lZWQgdG8gc2V0IE1TQzEgYmVmb3JlIHRyeWluZyB0byB3cml0ZSB0byB0aGUgSEVYIExFRHMgKi8KLS8qCWxkcglyMiwJW3IzXQkJLyAgbmVlZCB0byByZWFkIGl0IGJhY2sgdG8gbWFrZSBzdXJlIHRoZSB2YWx1ZSBsYXRjaGVzIChzZWUgTVNDIHNlY3Rpb24gb2YgbWFudWFsKSAqLwotLyogKi8KLS8qCWxkcglyMSwJPUxFRF9CTEFOSyAqLwotLyoJbW92CXIwLAkjMHhGRiAqLwotLyoJc3RyCXIwLAlbcjFdCQkvICB0dXJuIG9uIGhleCBsZWRzICovCi0vKiAqLwotLypsb29wOiAqLwotLyogKi8KLS8qICAgbGRyCXIwLCA9MHhCMDA3MDAwMSAqLwotLyogICBsZHIJcjEsID1fTEVEICovCi0vKiAgIHN0cglyMCwgW3IxXQkJLyAgaGV4IGRpc3BsYXkgKi8KLQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIEVuYWJsZSBtZW1vcnkgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogVGhlIHNlcXVlbmNlIGJlbG93IGlzIGJhc2VkIG9uIHRoZSByZWNvbW1lbmRlZCBpbml0IHN0ZXBzICAgICAgICAqLwotCS8qIGRldGFpbGVkIGluIHRoZSBJbnRlbCBQWEEyNTAgT3BlcmF0aW5nIFN5c3RlbXMgRGV2ZWxvcGVycyBHdWlkZSwgKi8KLQkvKiBDaGFwdGVyIDEwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMTogV2FpdCBmb3IgYXQgbGVhc3QgMjAwIG1pY3Jvc2Vkb25kcyB0byBhbGxvdyBpbnRlcm5hbCAgICAgKi8KLQkvKiAgICAgICAgIGNsb2NrcyB0byBzZXR0bGUuIE9ubHkgbmVjZXNzYXJ5IGFmdGVyIGhhcmQgcmVzZXQuLi4gICAgICovCi0JLyogICAgICAgICBGSVhNRTogY2FuIGJlIG9wdGltaXplZCBsYXRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCWxkciByMywgPU9TQ1IJCQkvKiByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybyAqLwotCW1vdiByMiwgIzAKLQlzdHIgcjIsIFtyM10KLQlsZHIgcjQsID0weDMwMAkJCS8qIHJlYWxseSAweDJFMSBpcyBhYm91dCAyMDB1c2VjLCAgICovCi0JCQkJCS8qIHNvIDB4MzAwIHNob3VsZCBiZSBwbGVudHkgICAgICAgICovCi0xOgotCWxkciByMiwgW3IzXQotCWNtcCByNCwgcjIKLQliZ3QgMWIKLQotbWVtX2luaXQ6Ci0KLQlsZHIgICAgIHIxLCAgPU1FTUNfQkFTRQkJLyogZ2V0IG1lbW9yeSBjb250cm9sbGVyIGJhc2UgYWRkci4gKi8KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJhOiBJbml0aWFsaXplIEFzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5IGNvbnRyb2xsZXIgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogTVNDIHJlZ2lzdGVyczogdGltaW5nLCBidXMgd2lkdGgsIG1lbSB0eXBlICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JLyogTVNDMDogbkNTKDAsMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICAgPUNPTkZJR19TWVNfTVNDMF9WQUwKLQlzdHIgICAgIHIyLCAgIFtyMSwgI01TQzBfT0ZGU0VUXQotCWxkciAgICAgcjIsICAgW3IxLCAjTVNDMF9PRkZTRVRdCS8qIHJlYWQgYmFjayB0byBlbnN1cmUgICAgICAqLwotCQkJCQkJLyogdGhhdCBkYXRhIGxhdGNoZXMgICAgICAgICovCi0JLyogTVNDMTogbkNTKDIsMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NU0MxX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNU0MxX09GRlNFVF0KLQlsZHIgICAgIHIyLCAgW3IxLCAjTVNDMV9PRkZTRVRdCi0KLQkvKiBNU0MyOiBuQ1MoNCw1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiwgID1DT05GSUdfU1lTX01TQzJfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01TQzJfT0ZGU0VUXQotCWxkciAgICAgcjIsICBbcjEsICNNU0MyX09GRlNFVF0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJiOiBJbml0aWFsaXplIENhcmQgSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogTUVDUjogTWVtb3J5IEV4cGFuc2lvbiBDYXJkIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NRUNSX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNRUNSX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01FQ1JfT0ZGU0VUXQotCi0JLyogTUNNRU0wOiBDYXJkIEludGVyZmFjZSBzbG90IDAgdGltaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ01FTTBfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DTUVNMF9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ01FTTBfT0ZGU0VUXQotCi0JLyogTUNNRU0xOiBDYXJkIEludGVyZmFjZSBzbG90IDEgdGltaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ01FTTFfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DTUVNMV9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ01FTTFfT0ZGU0VUXQotCi0JLyogTUNBVFQwOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ0FUVDBfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DQVRUMF9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ0FUVDBfT0ZGU0VUXQotCi0JLyogTUNBVFQxOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDEgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ0FUVDFfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DQVRUMV9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ0FUVDFfT0ZGU0VUXQotCi0JLyogTUNJTzA6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMCAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ0lPMF9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTUNJTzBfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNJTzBfT0ZGU0VUXQotCi0JLyogTUNJTzE6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMSAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ0lPMV9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTUNJTzFfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNJTzFfT0ZGU0VUXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMmM6IFdyaXRlIEZMWUNORkcgIEZJWE1FOiB3aGF0J3MgdGhhdD8/PyAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiB0ZXN0IGlmIHdlIHJ1biBmcm9tIGZsYXNoIG9yIFJBTSAtIFJBTS9CREk6IGRvbid0IHNldHVwIFJBTSAgICAgICovCi0JYWRyCXIzLCBtZW1faW5pdAkJLyogcjAgPC0gY3VycmVudCBwb3NpdGlvbiBvZiBjb2RlICAgKi8KLQlsZHIJcjIsID1tZW1faW5pdAotCWNtcAlyMywgcjIJCQkvKiBza2lwIGluaXQgaWYgaW4gcGxhY2UgICAgICAgICAgICAqLwotCWJlcQlpbml0aXJxcwotCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAyZDogSW5pdGlhbGl6ZSBUaW1pbmcgZm9yIFN5bmMgTWVtb3J5IChTRENMSzApICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIEJlZm9yZSBhY2Nlc3NpbmcgTURSRUZSIHdlIG5lZWQgYSB2YWxpZCBEUkkgZmllbGQsIHNvIHdlIHNldCAgICAgKi8KLQkvKiB0aGlzIHRvIHBvd2VyIG9uIGRlZmF1bHRzICsgRFJJIGZpZWxkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQlsZHIJcjMsCT1DT05GSUdfU1lTX01EUkVGUl9WQUwKLQlsZHIJcjIsCT0weEZGRgotCWFuZAlyMywJcjMsIHIyCi0JbGRyCXI0LAk9MHgwM2NhNDAwMAotCW9ycglyNCwJcjQsICByMwotCi0Jc3RyCXI0LAlbcjEsICNNRFJFRlJfT0ZGU0VUXQkvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KLQlsZHIgICAgIHI0LAlbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAzOiBJbml0aWFsaXplIFN5bmNocm9ub3VzIFN0YXRpYyBNZW1vcnkgKEZsYXNoL1BlcmlwaGVyYWxzKSAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIEluaXRpYWxpemUgU1hDTkZHIHJlZ2lzdGVyLiBBc3NlcnQgdGhlIGVuYWJsZSBiaXRzICAgICAgICAgICAgICAgKi8KLQotCS8qIFdyaXRlIFNYTVJTIHRvIGNhdXNlIGFuIE1SUyBjb21tYW5kIHRvIGFsbCBlbmFibGVkIGJhbmtzIG9mICAgICAgKi8KLQkvKiBzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5LiBOb3RlIHRoYXQgU1hMQ1IgbmVlZCBub3QgYmUgd3JpdHRlbiAgICovCi0JLyogYXQgdGhpcyB0aW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JLyogRklYTUU6IHdlIHVzZSBhc3luYyBtb2RlIGZvciBub3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCA0OiBJbml0aWFsaXplIFNEUkFNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIFN0ZXAgNGE6IGFzc2VydCBNRFJFRlI6Sz9SVU4gYW5kIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAgICAgICAgICBNRFJFRlI6SzFEQjIgYW5kIE1EUkVGUjpLMkRCMiBhcyBkZXNpcmVkLiAgICAgICAgICAgICAgICovCi0KLQlsZHIJcjQsCT1DT05GSUdfU1lTX01EUkVGUl9WQUwKLQlzdHIJcjQsCVtyMSwgI01EUkVGUl9PRkZTRVRdCS8qIHdyaXRlIGJhY2sgTURSRUZSICAgICAgICAqLwotCWxkcglyNCwJW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCS8qIFN0ZXAgNGI6IGRlLWFzc2VydCBNRFJFRlI6U0xGUlNILiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCWJpYwlyNCwJcjQsICMoTURSRUZSX1NMRlJTSCkKLQotCXN0ciAgICAgcjQsICAgICBbcjEsICNNRFJFRlJfT0ZGU0VUXSAgICAvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KLQlsZHIgICAgIHI0LCAgICAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCi0JLyogU3RlcCA0YzogYXNzZXJ0IE1EUkVGUjpFMVBJTiBhbmQgRTBQSU8gICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0Jb3JyCXI0LAlyNCwJIyhNRFJFRlJfRTFQSU58TURSRUZSX0UwUElOKQotCi0Jc3RyICAgICByNCwgICAgIFtyMSwgI01EUkVGUl9PRkZTRVRdICAgIC8qIHdyaXRlIGJhY2sgTURSRUZSICAgICAgICAqLwotCWxkciAgICAgcjQsICAgICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0KLQkvKiBTdGVwIDRkOiB3cml0ZSBNRENORkcgd2l0aCBNRENORkc6REV4IGRlYXNzZXJ0ZWQgKHNldCB0byAwKSwgdG8gICovCi0JLyogICAgICAgICAgY29uZmlndXJlIGJ1dCBub3QgZW5hYmxlIGVhY2ggU0RSQU0gcGFydGl0aW9uIHBhaXIuICAgICAqLwotCi0JbGRyCXI0LAk9Q09ORklHX1NZU19NRENORkdfVkFMCi0JYmljCXI0LAlyNCwJIyhNRENORkdfREUwfE1EQ05GR19ERTEpCi0KLQlzdHIgICAgIHI0LCAgICAgW3IxLCAjTURDTkZHX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRENORkcgICAgICAgICovCi0JbGRyICAgICByNCwgICAgIFtyMSwgI01EQ05GR19PRkZTRVRdCi0KLQotCS8qIFN0ZXAgNGU6IFdhaXQgZm9yIHRoZSBjbG9jayB0byB0aGUgU0RSQU1zIHRvIHN0YWJpbGl6ZSwgICAgICAgICAgKi8KLQkvKiAgICAgICAgICAxMDAuLjIwMCC1c2VjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQlsZHIgcjMsID1PU0NSCQkJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KLQltb3YgcjIsICMwCi0Jc3RyIHIyLCBbcjNdCi0JbGRyIHI0LCA9MHgzMDAJCQkvKiByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgICAqLwotCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICAgICAgICAqLwotMToKLQlsZHIgcjIsIFtyM10KLQljbXAgcjQsIHIyCi0JYmd0IDFiCi0KLQotCS8qIFN0ZXAgNGY6IFRyaWdnZXIgYSBudW1iZXIgKHVzdWFsbHkgOCkgcmVmcmVzaCBjeWNsZXMgYnkgICAgICAgICAgKi8KLQkvKiAgICAgICAgICBhdHRlbXB0aW5nIG5vbi1idXJzdCByZWFkIG9yIHdyaXRlIGFjY2Vzc2VzIHRvIGRpc2FibGVkICovCi0JLyogICAgICAgICAgU0RSQU0sIGFzIGNvbW1vbmx5IHNwZWNpZmllZCBpbiB0aGUgcG93ZXIgdXAgc2VxdWVuY2UgICAqLwotCS8qICAgICAgICAgIGRvY3VtZW50ZWQgaW4gU0RSQU0gZGF0YSBzaGVldHMuIFRoZSBhZGRyZXNzKGVzKSB1c2VkICAgKi8KLQkvKiAgICAgICAgICBmb3IgdGhpcyBwdXJwb3NlIG11c3Qgbm90IGJlIGNhY2hlYWJsZS4gICAgICAgICAgICAgICAgICovCi0KLQkvKiAgICAgICAgICBUaGVyZSBzaG91bGQgOSB3cml0ZXMsIHNpbmNlIHRoZSBmaXJzdCB3cml0ZSBkb2Vzbid0ICAgICovCi0JLyogICAgICAgICAgdHJpZ2dlciBhIHJlZnJlc2ggY3ljbGUgb24gUFhBMjUwLiBTZWUgSW50ZWwgUFhBMjUwIGFuZCAqLwotCS8qICAgICAgICAgIFBYQTIxMCBQcm9jZXNzb3JzIFNwZWNpZmljYXRpb24gVXBkYXRlLCAgICAgICAgICAgICAgICAgKi8KLQkvKiAgICAgICAgICBKYW4gMjAwMywgRXJyYXRhICMxMTYsIHBhZ2UgMzAuICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQotCWxkcglyMywJPUNPTkZJR19TWVNfRFJBTV9CQVNFCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0KLQkvKiBTdGVwIDRnOiBXcml0ZSBNRENORkcgd2l0aCBlbmFibGUgYml0cyBhc3NlcnRlZCAgICAgICAgICAgICAgICAgICovCi0JLyogICAgICAgICAgKE1EQ05GRzpERXggc2V0IHRvIDEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JbGRyCXIzLCBbcjEsICNNRENORkdfT0ZGU0VUXQotCW9ycglyMywJcjMsCSMoTURDTkZHX0RFMHxNRENORkdfREUxKQotCXN0cglyMywgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotCS8qIFN0ZXAgNGg6IFdyaXRlIE1ETVJTLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NRE1SU19WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTURNUlNfT0ZGU0VUXQotCi0KLQkvKiBXZSBhcmUgZmluaXNoZWQgd2l0aCBJbnRlbCdzIG1lbW9yeSBjb250cm9sbGVyIGluaXRpYWxpc2F0aW9uICAgICovCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogRGlzYWJsZSAobWFzaykgYWxsIGludGVycnVwdHMgYXQgaW50ZXJydXB0IGNvbnRyb2xsZXIgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotaW5pdGlycXM6Ci0KLQltb3YgICAgIHIxLCAjMAkJLyogY2xlYXIgaW50LiBsZXZlbCByZWdpc3RlciAoSVJRLCBub3QgRklRKSAqLwotCWxkciAgICAgcjIsICA9SUNMUgotCXN0ciAgICAgcjEsICBbcjJdCi0KLQlsZHIgICAgIHIyLCAgPUlDTVIJLyogbWFzayBhbGwgaW50ZXJydXB0cyBhdCB0aGUgY29udHJvbGxlciAgICAqLwotCXN0ciAgICAgcjEsICBbcjJdCi0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBDbG9jayBpbml0aWFsaXNhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1pbml0Y2xrczoKLQotCS8qIERpc2FibGUgdGhlIHBlcmlwaGVyYWwgY2xvY2tzLCBhbmQgc2V0IHRoZSBjb3JlIGNsb2NrIGZyZXF1ZW5jeSAgKi8KLQkvKiAoaGFyZC1jb2RpbmcgYXQgMzk4LjEyTUh6IGZvciBub3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQkvKiBUdXJuIE9mZiBBTEwgb24tY2hpcCBwZXJpcGhlcmFsIGNsb2NrcyBmb3IgcmUtY29uZmlndXJhdGlvbiAgICAgICovCi0JLyogTm90ZTogU2VlIGxhYmVsICdFTkFCTEVDTEtTJyBmb3IgdGhlIHJlLWVuYWJsaW5nICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjEsICA9Q0tFTgotCW1vdiAgICAgcjIsICAjMAotCXN0ciAgICAgcjIsICBbcjFdCi0KLQotCS8qIGRlZmF1bHQgdmFsdWUgaW4gY2FzZSBubyB2YWxpZCByb3Rhcnkgc3dpdGNoIHNldHRpbmcgaXMgZm91bmQgICAgKi8KLQlsZHIgICAgIHIyLCA9KENDQ1JfTDI3fENDQ1JfTTJ8Q0NDUl9OMTApICAvKiBERUZBVUxUOiB7MjAwLzIwMC8xMDB9ICovCi0KLQkvKiAuLi4gYW5kIHdyaXRlIHRoZSBjb3JlIGNsb2NrIGNvbmZpZyByZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMSwgID1DQ0NSCi0Jc3RyICAgICByMiwgIFtyMV0KLQotCS8qIGVuYWJsZSB0aGUgMzJLaHogb3NjaWxsYXRvciBmb3IgUlRDIGFuZCBQb3dlck1hbmFnZXIgICAgICAgICAgICAgKi8KLS8qCi0JbGRyICAgICByMSwgID1PU0NDCi0JbW92ICAgICByMiwgICNPU0NDX09PTgotCXN0ciAgICAgcjIsICBbcjFdCi0qLwotCS8qIE5PVEU6ICBzcGluIGhlcmUgdW50aWwgT1NDQy5PT0sgZ2V0IHNldCwgbWVhbmluZyB0aGUgUExMICAgICAgICAgKi8KLQkvKiBoYXMgc2V0dGxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi02MDoKLQlsZHIgICAgIHIyLCBbcjFdCi0JYW5kcyAgICByMiwgcjIsICMxCi0JYmVxICAgICA2MGIKLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogU2F2ZSBTRFJBTSBzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkcglyMSwgPURSQU1fU0laRQotCXN0cglyOCwgW3IxXQotCi0JLyogSW50ZXJydXB0IGluaXQ6IE1hc2sgYWxsIGludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkcglyMCwgPUlDTVIJCQkvKiBlbmFibGUgbm8gc291cmNlcyAgICAgICAgKi8KLQltb3YJcjEsICMwCi0Jc3RyCXIxLCBbcjBdCi0KLQkvKiBGSVhNRSAqLwotCi0jaWZuZGVmIERFQlVHCi0JLypEaXNhYmxlIHNvZnR3YXJlIGFuZCBkYXRhIGJyZWFrcG9pbnRzICovCi0JbW92CXIwLCMwCi0JbWNyCXAxNSwwLHIwLGMxNCxjOCwwICAvKiBpYmNyMCAqLwotCW1jcglwMTUsMCxyMCxjMTQsYzksMCAgLyogaWJjcjEgKi8KLQltY3IJcDE1LDAscjAsYzE0LGM0LDAgIC8qIGRiY29uICovCi0KLQkvKkVuYWJsZSBhbGwgZGVidWcgZnVuY3Rpb25hbGl0eSAqLwotCW1vdglyMCwjMHg4MDAwMDAwMAotCW1jcglwMTQsMCxyMCxjMTAsYzAsMCAgLyogZGNzciAqLwotI2VuZGlmCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogRW5kIGxvd2xldmVsX2luaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1lbmRsb3dsZXZlbF9pbml0OgotCi0gICAgbW92ICAgICBwYywgbHIKZGlmZiAtLWdpdCBhL2JvYXJkL2RhdmluY2kvZGE4eHhldm0vY29uZmlnLm1rIGIvYm9hcmQvZGF2aW5jaS9kYTh4eGV2bS9jb25maWcubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxNzZmN2Q1Li4wMDAwMDAwCi0tLSBhL2JvYXJkL2RhdmluY2kvZGE4eHhldm0vY29uZmlnLm1rCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotIwotIyAoQykgQ29weXJpZ2h0IDIwMDgsIFRleGFzIEluc3RydW1lbnRzLCBJbmMuIGh0dHA6Ly93d3cudGkuY29tLwotIwotIyBDb3B5cmlnaHQgKEMpIDIwMDcgU2VyZ2V5IEt1YnVzaHluIDxrc2lAa29pOC5uZXQ+Ci0jCi0jIChDKSBDb3B5cmlnaHQgMjAwMgotIyBHYXJ5IEplbm5lam9obiwgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgPGdqQGRlbnguZGU+Ci0jIERhdmlkIE11ZWxsZXIsIEVMU09GVCBBRywgPGQubXVlbGxlckBlbHNvZnQuY2g+Ci0jCi0jIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCi0jIHByb2plY3QuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCVNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSMgTUEgMDIxMTEtMTMwNyBVU0EKLSMKLQotIyBUZXhhcyBJbnN0cnVtZW50cyBEQTh4eCBFVk0gYm9hcmQgKEFSTTkyNUVKUykgY3B1Ci0jIHNlZSBodHRwOi8vd3d3LnRpLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gVGV4YXMgSW5zdHJ1bWVudHMKLSMKLSMgREE4eHggRVZNIGhhcyAxIGJhbmsgb2YgNjQgTUIgU0RSQU0gKDIgMTZNZWcgeDE2IGNoaXBzKS4KLSMgUGh5c2ljYWwgQWRkcmVzczoKLSMgQzAwMCcwMDAwIHRvIEM0MDAnMDAwMAotIwotIyBMaW51eC1LZXJuZWwgaXMgZXhwZWN0ZWQgdG8gYmUgYXQgQzAwMCc4MDAwLCBlbnRyeSBDMDAwJzgwMDAKLSMgKG1lbSBiYXNlICsgcmVzZXJ2ZWQpCi0jCi0jIHdlIGxvYWQgb3Vyc2VsZiB0byBDMTA4ICcwMDAwCi0KLQotI1Byb3ZpZGUgYXQgbGVhc3QgMTZNQiBzcGFjaW5nIGJldHdlZW4gdXMgYW5kIHRoZSBMaW51eCBLZXJuZWwgaW1hZ2UKLUNPTkZJR19TWVNfVEVYVF9CQVNFID0gMHhDMTA4MDAwMApkaWZmIC0tZ2l0IGEvYm9hcmQvZGVsdGEvTWFrZWZpbGUgYi9ib2FyZC9kZWx0YS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ4ZTAwYy4uMDAwMDAwMAotLS0gYS9ib2FyZC9kZWx0YS9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotIwotIyAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNgotIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgotIwotIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotIyBwcm9qZWN0LgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0jIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotIyBNQSAwMjExMS0xMzA3IFVTQQotIwotCi1pbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKLQotTElCCT0gJChvYmopbGliJChCT0FSRCkuYQotCi1DT0JKUwk6PSBkZWx0YS5vIG5hbmQubwotU09CSlMJOj0gbG93bGV2ZWxfaW5pdC5vCi0KLVNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKLU9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQotU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQotCi0kKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKQotCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKSAkKFNPQkpTKQotCi1jbGVhbjoKLQlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCi0KLWRpc3RjbGVhbjoJY2xlYW4KLQlybSAtZiAkKExJQikgY29yZSAqLmJhayAkKG9iaikuZGVwZW5kCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBkZWZpbmVzICQob2JqKS5kZXBlbmQgdGFyZ2V0Ci1pbmNsdWRlICQoU1JDVFJFRSkvcnVsZXMubWsKLQotc2luY2x1ZGUgJChvYmopLmRlcGVuZAotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9ib2FyZC9kZWx0YS9jb25maWcubWsgYi9ib2FyZC9kZWx0YS9jb25maWcubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMjQwNDQuLjAwMDAwMDAKLS0tIGEvYm9hcmQvZGVsdGEvY29uZmlnLm1rCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQ09ORklHX1NZU19URVhUX0JBU0UgPSAweDgzMDA4MDAwCmRpZmYgLS1naXQgYS9ib2FyZC9kZWx0YS9kZWx0YS5jIGIvYm9hcmQvZGVsdGEvZGVsdGEuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYyMzA3Ni4uMDAwMDAwMAotLS0gYS9ib2FyZC9kZWx0YS9kZWx0YS5jCisrKyAvZGV2L251bGwKQEAgLTEsMzc4ICswLDAgQEAKLS8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDYKLSAqIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcKLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi0jaW5jbHVkZSA8Y29tbW9uLmg+Ci0jaW5jbHVkZSA8bmV0ZGV2Lmg+Ci0jaW5jbHVkZSA8aTJjLmg+Ci0jaW5jbHVkZSA8ZGE5MDMwLmg+Ci0jaW5jbHVkZSA8bWFsbG9jLmg+Ci0jaW5jbHVkZSA8Y29tbWFuZC5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+Ci0jaW5jbHVkZSA8YXNtL2lvLmg+Ci0KLURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLXN0YXRpYyB2b2lkIGluaXRfREE5MDMwKHZvaWQpOwotc3RhdGljIHZvaWQga2V5c19pbml0KHZvaWQpOwotc3RhdGljIHZvaWQgZ2V0X3ByZXNzZWRfa2V5cyh1Y2hhciAqcyk7Ci1zdGF0aWMgdWNoYXIgKmtleV9tYXRjaCh1Y2hhciAqa2JkX2RhdGEpOwotCi0vKgotICogTWlzY2VsYW5lb3VzIHBsYXRmb3JtIGRlcGVuZGVudCBpbml0aWFsaXNhdGlvbnMKLSAqLwotCi1pbnQgYm9hcmRfaW5pdCAodm9pZCkKLXsKLQkvKiBtZW1vcnkgYW5kIGNwdS1zcGVlZCBhcmUgc2V0dXAgYmVmb3JlIHJlbG9jYXRpb24gKi8KLQkvKiBzbyB3ZSBkbyBfbm90aGluZ18gaGVyZSAqLwotCi0JLyogYXJjaCBudW1iZXIgb2YgTHViYm9jay1Cb2FyZCBta0B0YmQ6IGZpeCB0aGlzISAqLwotCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSBNQUNIX1RZUEVfTFVCQk9DSzsKLQotCS8qIGFkcmVzcyBvZiBib290IHBhcmFtZXRlcnMgKi8KLQlnZC0+YmQtPmJpX2Jvb3RfcGFyYW1zID0gMHhhMDAwMDEwMDsKLQotCXJldHVybiAwOwotfQotCi1pbnQgYm9hcmRfbGF0ZV9pbml0KHZvaWQpCi17Ci0jaWZkZWYgREVMVEFfQ0hFQ0tfS0VZQkQKLQl1Y2hhciBrYmRfZGF0YVtLRVlCRF9EQVRBTEVOXTsKLQljaGFyIGtleWJkX2VudlsyICogS0VZQkRfREFUQUxFTiArIDFdOwotCWNoYXIgKnN0cjsKLQlpbnQgaTsKLSNlbmRpZiAvKiBERUxUQV9DSEVDS19LRVlCRCAqLwotCi0Jc2V0ZW52KCJzdGRvdXQiLCAic2VyaWFsIik7Ci0Jc2V0ZW52KCJzdGRlcnIiLCAic2VyaWFsIik7Ci0KLSNpZmRlZiBERUxUQV9DSEVDS19LRVlCRAotCWtleXNfaW5pdCgpOwotCi0JbWVtc2V0KGtiZF9kYXRhLCAnXDAnLCBLRVlCRF9EQVRBTEVOKTsKLQotCS8qIGNoZWNrIGZvciBwcmVzc2VkIGtleXMgYW5kIHNldHVwIGtleWJkX2VudiAqLwotCWdldF9wcmVzc2VkX2tleXMoa2JkX2RhdGEpOwotCi0JZm9yIChpID0gMDsgaSA8IEtFWUJEX0RBVEFMRU47ICsraSkgewotCQlzcHJpbnRmIChrZXliZF9lbnYgKyBpICsgaSwgIiUwMlgiLCBrYmRfZGF0YVtpXSk7Ci0JfQotCXNldGVudiAoImtleWJkIiwga2V5YmRfZW52KTsKLQotCXN0ciA9IHN0cmR1cCAoKGNoYXIgKilrZXlfbWF0Y2ggKGtiZF9kYXRhKSk7CS8qIGRlY29kZSBrZXlzICovCi0KLSMgaWZkZWYgQ09ORklHX1BSRUJPT1QJLyogYXV0b21hdGljYWxseSBjb25maWd1cmUgInByZWJvb3QiIGNvbW1hbmQgb24ga2V5IG1hdGNoICovCi0Jc2V0ZW52ICgicHJlYm9vdCIsIHN0cik7CS8qIHNldCBvciBkZWxldGUgZGVmaW5pdGlvbiAqLwotIyBlbmRpZiAvKiBDT05GSUdfUFJFQk9PVCAqLwotCWlmIChzdHIgIT0gTlVMTCkgewotCQlmcmVlIChzdHIpOwotCX0KLSNlbmRpZiAvKiBERUxUQV9DSEVDS19LRVlCRCAqLwotCi0JaW5pdF9EQTkwMzAoKTsKLQlyZXR1cm4gMDsKLX0KLQotLyoKLSAqIE1hZ2ljIEtleSBIYW5kbGluZywgbWFpbmx5IGNvcGllZCBmcm9tIGJvYXJkL2x3bW9uL2x3bW9uLmMKLSAqLwotI2lmZGVmIERFTFRBX0NIRUNLX0tFWUJECi0KLXN0YXRpYyB1Y2hhciBrYmRfbWFnaWNfcHJlZml4W10gPSAia2V5X21hZ2ljIjsKLXN0YXRpYyB1Y2hhciBrYmRfY29tbWFuZF9wcmVmaXhbXSA9ICJrZXlfY21kIjsKLQotLyoKLSAqIEdldCBwcmVzc2VkIGtleXMKLSAqIHMgaXMgYSBidWZmZXIgb2Ygc2l6ZSBLRVlCRF9EQVRBTEVOLTEKLSAqLwotc3RhdGljIHZvaWQgZ2V0X3ByZXNzZWRfa2V5cyh1Y2hhciAqcykKLXsKLQl1bnNpZ25lZCBsb25nIHZhbDsKLQl2YWwgPSByZWFkbChHUExSMyk7Ci0KLQlpZih2YWwgJiAoMTw8MzEpKQotCQkqcysrID0gS0VZQkRfS1BfREtJTjA7Ci0JaWYodmFsICYgKDE8PDE4KSkKLQkJKnMrKyA9IEtFWUJEX0tQX0RLSU4xOwotCWlmKHZhbCAmICgxPDwyOSkpCi0JCSpzKysgPSBLRVlCRF9LUF9ES0lOMjsKLQlpZih2YWwgJiAoMTw8MjIpKQotCQkqcysrID0gS0VZQkRfS1BfREtJTjU7Ci19Ci0KLXN0YXRpYyB2b2lkIGtleXNfaW5pdCgpCi17Ci0Jd3JpdGVsKHJlYWRsKENLRU5CKSB8IENLRU5CXzdfR1BJTywgQ0tFTkIpOwotCXVkZWxheSgxMDApOwotCi0JLyogQ29uZmlndXJlIEdQSU9zICovCi0Jd3JpdGVsKDB4YTg0MCwgR1BJTzEyNyk7CS8qIEtQX0RLSU4wICovCi0Jd3JpdGVsKDB4YTg0MCwgR1BJTzExNCk7CS8qIEtQX0RLSU4xICovCi0Jd3JpdGVsKDB4YTg0MCwgR1BJTzEyNSk7CS8qIEtQX0RLSU4yICovCi0Jd3JpdGVsKDB4YTg0MCwgR1BJTzExOCk7CS8qIEtQX0RLSU41ICovCi0KLQkvKiBDb25maWd1cmUgR1BJT3MgYXMgaW5wdXRzICovCi0Jd3JpdGVsKHJlYWRsKEdQRFIzKSAmIH4oMTw8MzEgfCAxPDwxOCB8IDE8PDI5IHwgMTw8MjIpLCBHUERSMyk7Ci0Jd3JpdGVsKCgxPDwzMSB8IDE8PDE4IHwgMTw8MjkgfCAxPDwyMiksIEdDRFIzKTsKLQotCXVkZWxheSgxMDApOwotfQotCi1zdGF0aWMgaW50IGNvbXBhcmVfbWFnaWMgKHVjaGFyICprYmRfZGF0YSwgdWNoYXIgKnN0cikKLXsKLQkvKiB1Y2hhciBjb21wYXJlW0tFWUJEX0RBVEFMRU4tMV07ICovCi0JdWNoYXIgY29tcGFyZVtLRVlCRF9EQVRBTEVOXTsKLQljaGFyICpueHQ7Ci0JaW50IGk7Ci0KLQkvKiBEb24ndCBpbmNsdWRlIG1vZGlmaWVyIGJ5dGUgKi8KLQkvKiBtZW1jcHkgKGNvbXBhcmUsIGtiZF9kYXRhKzEsIEtFWUJEX0RBVEFMRU4tMSk7ICovCi0JbWVtY3B5IChjb21wYXJlLCBrYmRfZGF0YSwgS0VZQkRfREFUQUxFTik7Ci0KLQlmb3IgKDsgc3RyICE9IE5VTEw7IHN0ciA9ICgqbnh0KSA/ICh1Y2hhciAqKShueHQrMSkgOiAodWNoYXIgKilueHQpIHsKLQkJdWNoYXIgYzsKLQkJaW50IGs7Ci0KLQkJYyA9ICh1Y2hhcikgc2ltcGxlX3N0cnRvdWwgKChjaGFyICopc3RyLCAoY2hhciAqKikgKCZueHQpLCAxNik7Ci0KLQkJaWYgKHN0ciA9PSAodWNoYXIgKilueHQpIHsJLyogaW52YWxpZCBjaGFyYWN0ZXIgKi8KLQkJCWJyZWFrOwotCQl9Ci0KLQkJLyoKLQkJICogQ2hlY2sgaWYgdGhpcyBrZXkgbWF0Y2hlcyB0aGUgaW5wdXQuCi0JCSAqIFNldCBtYXRjaGVzIHRvIHplcm8sIHNvIHRoZXkgbWF0Y2ggb25seSBvbmNlCi0JCSAqIGFuZCB3ZSBjYW4gZmluZCBkdXBsaWNhdGVzIG9yIGV4dHJhIGtleXMKLQkJICovCi0JCWZvciAoayA9IDA7IGsgPCBzaXplb2YoY29tcGFyZSk7ICsraykgewotCQkJaWYgKGNvbXBhcmVba10gPT0gJ1wwJykJLyogb25seSBub24temVybyBlbnRyaWVzICovCi0JCQkJY29udGludWU7Ci0JCQlpZiAoYyA9PSBjb21wYXJlW2tdKSB7CS8qIGZvdW5kIG1hdGNoaW5nIGtleSAqLwotCQkJCWNvbXBhcmVba10gPSAnXDAnOwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JCWlmIChrID09IHNpemVvZihjb21wYXJlKSkgewotCQkJcmV0dXJuIC0xOwkJLyogdW5tYXRjaGVkIGtleSAqLwotCQl9Ci0JfQotCi0JLyoKLQkgKiBBIGZ1bGwgbWF0Y2ggbGVhdmVzIG5vIGtleXMgaW4gdGhlIGBjb21wYXJlJyBhcnJheSwKLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGNvbXBhcmUpOyArK2kpIHsKLQkJaWYgKGNvbXBhcmVbaV0pCi0JCXsKLQkJCXJldHVybiAtMTsKLQkJfQotCX0KLQotCXJldHVybiAwOwotfQotCi0KLXN0YXRpYyB1Y2hhciAqa2V5X21hdGNoICh1Y2hhciAqa2JkX2RhdGEpCi17Ci0JY2hhciBtYWdpY1tzaXplb2YgKGtiZF9tYWdpY19wcmVmaXgpICsgMV07Ci0JdWNoYXIgKnN1ZmZpeDsKLQljaGFyICprYmRfbWFnaWNfa2V5czsKLQotCS8qCi0JICogVGhlIGZvbGxvd2luZyBzdHJpbmcgZGVmaW5lcyB0aGUgY2hhcmFjdGVycyB0aGF0IGNhbiBwZSBhcHBlbmRlZAotCSAqIHRvICJrZXlfbWFnaWMiIHRvIGZvcm0gdGhlIG5hbWVzIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0Ci0JICogaG9sZCAibWFnaWMiIGtleSBjb2RlcywgaS4gZS4gc3VjaCBrZXkgY29kZXMgdGhhdCBjYW4gY2F1c2UKLQkgKiBwcmUtYm9vdCBhY3Rpb25zLiBJZiB0aGUgc3RyaW5nIGlzIGVtcHR5ICgiIiksIHRoZW4gb25seQotCSAqICJrZXlfbWFnaWMiIGlzIGNoZWNrZWQgKG9sZCBiZWhhdmlvdXIpOyB0aGUgc3RyaW5nICIxMjUiIGNhdXNlcwotCSAqIGNoZWNrcyBmb3IgImtleV9tYWdpYzEiLCAia2V5X21hZ2ljMiIgYW5kICJrZXlfbWFnaWM1IiwgZXRjLgotCSAqLwotCWlmICgoa2JkX21hZ2ljX2tleXMgPSBnZXRlbnYgKCJtYWdpY19rZXlzIikpID09IE5VTEwpCi0JCWtiZF9tYWdpY19rZXlzID0gIiI7Ci0KLQkvKiBsb29wIG92ZXIgYWxsIG1hZ2ljIGtleXM7Ci0JICogdXNlICdcMCcgc3VmZml4IGluIGNhc2Ugb2YgZW1wdHkgc3RyaW5nCi0JICovCi0JZm9yIChzdWZmaXg9KHVjaGFyICopa2JkX21hZ2ljX2tleXM7ICpzdWZmaXggfHwgc3VmZml4PT0odWNoYXIgKilrYmRfbWFnaWNfa2V5czsgKytzdWZmaXgpIHsKLQkJc3ByaW50ZiAobWFnaWMsICIlcyVjIiwga2JkX21hZ2ljX3ByZWZpeCwgKnN1ZmZpeCk7Ci0jaWYgMAotCQlwcmludGYgKCIjIyMgQ2hlY2sgbWFnaWMgXCIlc1wiXG4iLCBtYWdpYyk7Ci0jZW5kaWYKLQkJaWYgKGNvbXBhcmVfbWFnaWMoa2JkX2RhdGEsICh1Y2hhciAqKWdldGVudihtYWdpYykpID09IDApIHsKLQkJCWNoYXIgY21kX25hbWVbc2l6ZW9mIChrYmRfY29tbWFuZF9wcmVmaXgpICsgMV07Ci0JCQljaGFyICpjbWQ7Ci0KLQkJCXNwcmludGYgKGNtZF9uYW1lLCAiJXMlYyIsIGtiZF9jb21tYW5kX3ByZWZpeCwgKnN1ZmZpeCk7Ci0KLQkJCWNtZCA9IGdldGVudiAoY21kX25hbWUpOwotI2lmIDAKLQkJCXByaW50ZiAoIiMjIyBTZXQgUFJFQk9PVCB0byAkKCVzKTogXCIlc1wiXG4iLAotCQkJCWNtZF9uYW1lLCBjbWQgPyBjbWQgOiAiPDxOVUxMPj4iKTsKLSNlbmRpZgotCQkJKmtiZF9kYXRhID0gKnN1ZmZpeDsKLQkJCXJldHVybiAoKHVjaGFyICopY21kKTsKLQkJfQotCX0KLSNpZiAwCi0JcHJpbnRmICgiIyMjIERlbGV0ZSBQUkVCT09UXG4iKTsKLSNlbmRpZgotCSprYmRfZGF0YSA9ICdcMCc7Ci0JcmV0dXJuIChOVUxMKTsKLX0KLQotaW50IGRvX2tiZCAoY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICogY29uc3QgYXJndltdKQotewotCXVjaGFyIGtiZF9kYXRhW0tFWUJEX0RBVEFMRU5dOwotCWNoYXIga2V5YmRfZW52WzIgKiBLRVlCRF9EQVRBTEVOICsgMV07Ci0JaW50IGk7Ci0KLQkvKiBSZWFkIGtleXMgKi8KLQlnZXRfcHJlc3NlZF9rZXlzKGtiZF9kYXRhKTsKLQlwdXRzICgiS2V5czoiKTsKLQlmb3IgKGkgPSAwOyBpIDwgS0VZQkRfREFUQUxFTjsgKytpKSB7Ci0JCXNwcmludGYgKGtleWJkX2VudiArIGkgKyBpLCAiJTAyWCIsIGtiZF9kYXRhW2ldKTsKLQkJcHJpbnRmICgiICUwMngiLCBrYmRfZGF0YVtpXSk7Ci0JfQotCXB1dGMgKCdcbicpOwotCXNldGVudiAoImtleWJkIiwga2V5YmRfZW52KTsKLQlyZXR1cm4gMDsKLX0KLQotVV9CT09UX0NNRCgKLQkgICBrYmQsCTEsCTEsCWRvX2tiZCwKLQkgICAicmVhZCBrZXlib2FyZCBzdGF0dXMiLAotCSAgICIiCi0pOwotCi0jZW5kaWYgLyogREVMVEFfQ0hFQ0tfS0VZQkQgKi8KLQotCi1pbnQgZHJhbV9pbml0ICh2b2lkKQotewotCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKLQlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVsxXS5zdGFydCA9IFBIWVNfU0RSQU1fMjsKLQlnZC0+YmQtPmJpX2RyYW1bMV0uc2l6ZSA9IFBIWVNfU0RSQU1fMl9TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVsyXS5zdGFydCA9IFBIWVNfU0RSQU1fMzsKLQlnZC0+YmQtPmJpX2RyYW1bMl0uc2l6ZSA9IFBIWVNfU0RSQU1fM19TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVszXS5zdGFydCA9IFBIWVNfU0RSQU1fNDsKLQlnZC0+YmQtPmJpX2RyYW1bM10uc2l6ZSA9IFBIWVNfU0RSQU1fNF9TSVpFOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXZvaWQgaTJjX2luaXRfYm9hcmQoKQotewotCXdyaXRlbChyZWFkbChDS0VOQikgfCAoQ0tFTkJfNF9JMkMpLCBDS0VOQik7Ci0KLQkvKiBzZXR1cCBJMkMgR1BJTydzICovCi0Jd3JpdGVsKDB4ODAxLCBHUElPMzIpOwkJLyogU0NMID0gQWx0LiBGa3QuIDEgKi8KLQl3cml0ZWwoMHg4MDEsIEdQSU8zMyk7CQkvKiBTREEgPSBBbHQuIEZrdC4gMSAqLwotfQotCi0vKiBpbml0aWFsaXplIHRoZSBEQTkwMzAgUG93ZXIgQ29udHJvbGxlciAqLwotc3RhdGljIHZvaWQgaW5pdF9EQTkwMzAoKQotewotCXVjaGFyIGFkZHIgPSAodWNoYXIpIERBOTAzMF9JMkNfQUREUiwgdmFsID0gMDsKLQotCXdyaXRlbChyZWFkbChDS0VOQikgfCBDS0VOQl83X0dQSU8sIENLRU5CKTsKLQl1ZGVsYXkoMTAwKTsKLQotCS8qIFJpc2luZyBFZGdlIG9uIEVYVE9OIHRvIHJlc2V0IERBOTAzMCAqLwotCXdyaXRlbCgweDg4MDAsIEdQSU8xNyk7CS8qIGNvbmZpZ3VyZSBHUElPMTcsIG5vIHB1bGx1cCwgLWRvd24gKi8KLQl3cml0ZWwocmVhZGwoR1BEUjApIHwgKDE8PDE3KSwgR1BEUjApOwkvKiBHUElPMTcgaXMgb3V0cHV0ICovCi0Jd3JpdGVsKCgxPDwxNyksIEdTRFIwKTsKLQl3cml0ZWwoKDE8PDE3KSwgR1BDUjApOwkvKiBkcml2ZSBHUElPMTcgbG93ICovCi0Jd3JpdGVsKCgxPDwxNyksIEdQU1IwKTsJLyogZHJpdmUgR1BJTzE3IGhpZ2ggKi8KLQotI2lmIENPTkZJR19TWVNfREE5MDMwX0VYVE9OX0RFTEFZCi0JdWRlbGF5KCh1bnNpZ25lZCBsb25nKSBDT05GSUdfU1lTX0RBOTAzMF9FWFRPTl9ERUxBWSk7CS8qIHdhaXQgZm9yIERBOTAzMCAqLwotI2VuZGlmCi0Jd3JpdGVsKCgxPDwxNyksIEdQQ1IwKTsJLyogZHJpdmUgR1BJTzE3IGxvdyAqLwotCi0JLyogcmVzZXQgdGhlIHdhdGNoZG9nIGFuZCBnbyBhY3RpdmUgKDB4ZWMpICovCi0JdmFsID0gKFNZU19DT05UUk9MX0FfSFdSRVNfRU5BQkxFIHwKLQkgICAgICAgKDB4Njw8NCkgfAotCSAgICAgICBTWVNfQ09OVFJPTF9BX1dET0dfQUNUSU9OIHwKLQkgICAgICAgU1lTX0NPTlRST0xfQV9XQVRDSERPRyk7Ci0JaWYoaTJjX3dyaXRlKGFkZHIsIFNZU19DT05UUk9MX0EsIDEsICZ2YWwsIDEpKSB7Ci0JCXByaW50ZigiRXJyb3IgYWNjZXNzaW5nIERBOTAzMCB2aWEgaTJjLlxuIik7Ci0JCXJldHVybjsKLQl9Ci0KLQl2YWwgPSAweDgwOwotCWlmKGkyY193cml0ZShhZGRyLCBJUlFfTUFTS19CLCAxLCAmdmFsLCAxKSkgewotCQlwcmludGYoIkVycm9yIGFjY2Vzc2luZyBEQTkwMzAgdmlhIGkyYy5cbiIpOwotCQlyZXR1cm47Ci0JfQotCi0JaTJjX3JlZ193cml0ZShhZGRyLCBSRUdfQ09OVFJPTF8xXzk3LCAweGZkKTsgLyogZGlzYWJsZSBMRE8xLCBlbmFibGUgTERPNiAqLwotCWkyY19yZWdfd3JpdGUoYWRkciwgTERPMl8zLCAweGQxKTsJLyogTERPMiA9MSw5ViwgTERPMz0zLDFWICovCi0JaTJjX3JlZ193cml0ZShhZGRyLCBMRE80XzUsIDB4Y2MpOwkvKiBMRE8yID0xLDlWLCBMRE8zPTMsMVYgKi8KLQlpMmNfcmVnX3dyaXRlKGFkZHIsIExETzZfU0lNQ1AsIDB4M2UpOwkvKiBMRE82PTMsMlYsIFNJTUNQID0gNVYgc3VwcG9ydCAqLwotCWkyY19yZWdfd3JpdGUoYWRkciwgTERPN184LCAweGM5KTsJLyogTERPNz0yLDdWLCBMRE84PTMsMFYgKi8KLQlpMmNfcmVnX3dyaXRlKGFkZHIsIExETzlfMTIsIDB4ZWMpOwkvKiBMRE85PTMsMFYsIExETzEyPTMsMlYgKi8KLQlpMmNfcmVnX3dyaXRlKGFkZHIsIEJVQ0ssIDB4MGMpOwkvKiBCdWNrPTEuMlYgKi8KLQlpMmNfcmVnX3dyaXRlKGFkZHIsIFJFR19DT05UUk9MXzJfOTgsIDB4N2YpOyAvKiBBbGwgTERPJ1Mgb24gOCw5LDEwLDExLDEyLDE0ICovCi0JaTJjX3JlZ193cml0ZShhZGRyLCBMRE9fMTBfMTEsIDB4Y2MpOwkvKiBMRE8xMD0zLjBWICBMRE8xMT0zLjBWICovCi0JaTJjX3JlZ193cml0ZShhZGRyLCBMRE9fMTUsIDB4YWUpOwkvKiBMRE8xNT0xLjhWLCBkaXNsb2NrIGZpcnN0IDNiaXQgKi8KLQlpMmNfcmVnX3dyaXRlKGFkZHIsIExET18xNF8xNiwgMHgwNSk7CS8qIExETzE0PTIuOFYsIExETzE2PU5CICovCi0JaTJjX3JlZ193cml0ZShhZGRyLCBMRE9fMThfMTksIDB4OWMpOwkvKiBMRE8xOD0zLjBWLCBMRE8xOT0yLjdWICovCi0JaTJjX3JlZ193cml0ZShhZGRyLCBMRE9fMTdfU0lNQ1AwLCAweDJjKTsgLyogTERPMTc9My4wViwgU0lNQ1A9M1Ygc3VwcG9ydCAqLwotCWkyY19yZWdfd3JpdGUoYWRkciwgQlVDSzJfRFZDMSwgMHg5YSk7CS8qIEJ1Y2syPTEuNVYgcGx1cyBVcGRhdGUgc3VwcG9ydCBvZiA1MjAgTUh6ICovCi0JaTJjX3JlZ193cml0ZShhZGRyLCBSRUdfQ09OVFJPTF8yXzE4LCAweDQzKTsgLyogQmFsbCBvbiAqLwotCWkyY19yZWdfd3JpdGUoYWRkciwgTUlTQ19DT05UUk9MQiwgMHgwOCk7IC8qIHNlc3Npb24gdmFsaWQgZW5hYmxlICovCi0JaTJjX3JlZ193cml0ZShhZGRyLCBVU0JQVU1QLCAweGMxKTsJLyogc3RhcnQgcHVtcCwgaWdub3JlIEhXIHNpZ25hbHMgKi8KLQotCXZhbCA9IGkyY19yZWdfcmVhZChhZGRyLCBTVEFUVVMpOwotCWlmKHZhbCAmIFNUQVRVU19DSERFVCkKLQkJcHJpbnRmKCJDaGFyZ2VyIGRldGVjdGVkLCB0dXJuaW5nIG9uIExFRC5cbiIpOwotCWVsc2UgewotCQlwcmludGYoIk5vIGNoYXJnZXIgZGV0ZXRlY3RlZC5cbiIpOwotCQkvKiB1bmRlcnZvbHRhZ2U/IHByaW50IGVycm9yIGFuZCBwb3dlciBkb3duICovCi0JfQotfQotCi0KLSNpZiAwCi0vKiByZXNldCB0aGUgREE5MDMwIHdhdGNoZG9nICovCi12b2lkIGh3X3dhdGNoZG9nX3Jlc2V0KHZvaWQpCi17Ci0JdWNoYXIgYWRkciA9ICh1Y2hhcikgREE5MDMwX0kyQ19BRERSLCB2YWwgPSAwOwotCXZhbCA9IGkyY19yZWdfcmVhZChhZGRyLCBTWVNfQ09OVFJPTF9BKTsKLQl2YWwgfD0gU1lTX0NPTlRST0xfQV9XQVRDSERPRzsKLQlpMmNfcmVnX3dyaXRlKGFkZHIsIFNZU19DT05UUk9MX0EsIHZhbCk7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIENPTkZJR19DTURfTkVUCi1pbnQgYm9hcmRfZXRoX2luaXQoYmRfdCAqYmlzKQotewotCWludCByYyA9IDA7Ci0jaWZkZWYgQ09ORklHX1NNQzkxMTExCi0JcmMgPSBzbWM5MTExMV9pbml0aWFsaXplKDAsIENPTkZJR19TTUM5MTExMV9CQVNFKTsKLSNlbmRpZgotCXJldHVybiByYzsKLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYm9hcmQvZGVsdGEvbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvZGVsdGEvbG93bGV2ZWxfaW5pdC5TCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjY0ZjNiLi4wMDAwMDAwCi0tLSBhL2JvYXJkL2RlbHRhL2xvd2xldmVsX2luaXQuUworKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0vKgotICogKEMpIENvcHlyaWdodCAyMDA2IERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcKLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0jaW5jbHVkZSA8dmVyc2lvbi5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+Ci0KLURSQU1fU0laRTogIC5sb25nICAgQ09ORklHX1NZU19EUkFNX1NJWkUKLQotLm1hY3JvIHdhaXQgdGltZQotCWxkcgkJcjIsID1PU0NSCi0JbW92CQlyMywgIzAKLQlzdHIJCXIzLCBbcjJdCi0wOgotCWxkcgkJcjMsIFtyMl0KLQljbXAJCXIzLCBcdGltZQotCWJscwkJMGIKLS5lbmRtCi0KLS5nbG9ibCBsb3dsZXZlbF9pbml0Ci1sb3dsZXZlbF9pbml0OgotCS8qIFNldCB1cCBHUElPIHBpbnMgZmlyc3QgKi8KLQltb3YJIHIxMCwgbHIKLQotCS8qICBDb25maWd1cmUgR1BJTyAgUGlucyA5NywgOTggVUFSVDEgLyBhbHRlcm4uIEZrdC4gMSAqLwotCWxkcgkJcjAsID1HUElPOTcKLQlsZHIJCXIxLCA9MHg4MDEKLQlzdHIJCXIxLCBbcjBdCi0KLQlsZHIJCXIwLCA9R1BJTzk4Ci0JbGRyCQlyMSwgPTB4ODAxCi0Jc3RyCQlyMSwgW3IwXQotCi0JLyogdGVicmFuZHQgLSBBU0NSLCBjbGVhciB0aGUgUkRIIGJpdCAqLwotCWxkcgkJcjAsID1BU0NSCi0JbGRyCQlyMSwgW3IwXQotCWJpYwkJcjEsIHIxLCAjMHg4MDAwMDAwMAotCXN0cgkJcjEsIFtyMF0KLQotbWVtX2luaXQ6Ci0JLyogQ29uZmlndXJlIEFDQ1IgUmVnaXN0ZXIgLSBlbmFibGUgRE1FTUMgQ2xvY2sgYXQgMjYwIC8gMiBNSHogKi8KLQlsZHIJCXIwLCA9QUNDUgotCWxkcgkJcjEsIFtyMF0KLQlvcnIJCXIxLCByMSwgIzB4MzAwMAotCXN0cgkJcjEsIFtyMF0KLQlsZHIJCXIxLCBbcjBdCi0KLQkvKiAyLiBQcm9ncmFtbSBNRENORkcsIGxlYXZpbmcgRE1DRU4gZGUtYXNzZXJ0ZWQgKi8KLQlsZHIJCXIwLCA9TURDTkZHCi0JbGRyCQlyMSwgPShNRENORkdfRE1BUCB8IE1EQ05GR19EVFlQRSB8IE1EQ05GR19EVENfMiB8IE1EQ05GR19EQ1NFMCB8IE1EQ05GR19EUkFDXzEzKQotCS8qIGxkcgkJcjEsID0weDgwMDAwNDAzICovCi0Jc3RyCQlyMSwgW3IwXQotCWxkcgkJcjEsIFtyMF0JLyogZGVsYXkgdW50aWwgd3JpdHRlbiAqLwotCi0JLyogMy4gd2FpdCBub3AgcG93ZXIgdXAgd2FpdGluZyBwZXJpb2QgKDIwMG1zKQotCSAqIG9wdGltaXphdGlvbjogU3RlcHMgNCs2IGNhbiBiZSBkb25lIGR1cmluZyB0aGlzCi0JICovCi0Jd2FpdCAjMHgzMDAKLQotCS8qIDQuIFBlcmZvcm0gYW4gaW5pdGlhbCBSY29tcC1jYWxpYnJhdGlvbiBjeWNsZSAqLwotCWxkcgkJcjAsID1SQ09NUAotCWxkcgkJcjEsID0weDgwMDAwMDAwCi0Jc3RyCQlyMSwgW3IwXQotCWxkcgkJcjEsIFtyMF0JLyogZGVsYXkgdW50aWwgd3JpdHRlbiAqLwotCS8qIG1pc3Npbmc6IHByb2dyYW0gZm9yIGF1dG9tYXRpYyByY29tcCBldmFsdWF0aW9uIGN5Y2xlcyAqLwotCi0JLyogNS4gRERSIERSQU0gc3Ryb2JlIGRlbGF5IGNhbGlicmF0aW9uICovCi0JbGRyCQlyMCwgPUREUl9IQ0FMCi0JbGRyCQlyMSwgPTB4ODgwMDAwMDcKLQlzdHIJCXIxLCBbcjBdCi0Jd2FpdAkJIzUKLQlsZHIJCXIxLCBbcjBdCS8qIGRlbGF5IHVudGlsIHdyaXR0ZW4gKi8KLQotCS8qIFNldCBNRE1SUyAqLwotCWxkcgkJcjAsID1NRE1SUwotCWxkcgkJcjEsID0weDYwMDAwMDMzCi0Jc3RyCQlyMSwgW3IwXQotCXdhaXQJIzMwMAotCi0JLyogQ29uZmlndXJlIE1EUkVGUiAqLwotCWxkcgkJcjAsID1NRFJFRlIKLQlsZHIJCXIxLCA9MHgwMDAwMDAwNgotCXN0cgkJcjEsIFtyMF0KLQlsZHIJCXIxLCBbcjBdCi0KLQkvKiBFbmFibGUgdGhlIGR5bmFtaWMgbWVtb3J5IGNvbnRyb2xsZXIgKi8KLQlsZHIJCXIwLCA9TURDTkZHCi0JbGRyCQlyMSwgW3IwXQotCW9ycgkJcjEsIHIxLCAjTURDTkZHX0RNQ0VOCi0Jc3RyCQlyMSwgW3IwXQotCi0jaWZuZGVmIENPTkZJR19TWVNfU0tJUF9EUkFNX1NDUlVCCi0JLyogc2NydWIvaW5pdCBTRFJBTSBpZiBlbmFibGVkL3ByZXNlbnQgKi8KLQlsZHIJcjgsID1DT05GSUdfU1lTX0RSQU1fQkFTRQkvKiBiYXNlIGFkZHJlc3Mgb2YgU0RSQU0gKENPTkZJR19TWVNfRFJBTV9CQVNFKSAqLwotCWxkcglyOSwgPUNPTkZJR19TWVNfRFJBTV9TSVpFCS8qIHNpemUgb2YgbWVtb3J5IHRvIHNjcnViIChDT05GSUdfU1lTX0RSQU1fU0laRSkgKi8KLQltb3YJcjAsICMwCQkJLyogc2NydWIgd2l0aCAweDAwMDA6MDAwMCAqLwotCW1vdglyMSwgIzAKLQltb3YJcjIsICMwCi0JbW92CXIzLCAjMAotCW1vdglyNCwgIzAKLQltb3YJcjUsICMwCi0JbW92CXI2LCAjMAotCW1vdglyNywgIzAKLTEwOgkvKiBmYXN0U2NydWJMb29wICovCi0Jc3VicwlyOSwgcjksICMzMgkvKiA4IHdvcmRzL2xpbmUgKi8KLQlzdG1pYQlyOCEsIHtyMC1yN30KLQliZXEJMTVmCi0JYgkxMGIKLSNlbmRpZiAvKiBDT05GSUdfU1lTX1NLSVBfRFJBTV9TQ1JVQiAqLwotCi0xNToKLQkvKiBNYXNrIGFsbCBpbnRlcnJ1cHRzICovCi0JbW92CXIxLCAjMAotCW1jcglwNiwgMCwgcjEsIGMxLCBjMCwgMAlAIElDTVIKLQotCS8qIERpc2FibGUgc29mdHdhcmUgYW5kIGRhdGEgYnJlYWtwb2ludHMgKi8KLQltb3YJcjAsICMwCi0JbWNyCXAxNSwwLHIwLGMxNCxjOCwwICAvKiBpYmNyMCAqLwotCW1jcglwMTUsMCxyMCxjMTQsYzksMCAgLyogaWJjcjEgKi8KLQltY3IJcDE1LDAscjAsYzE0LGM0LDAgIC8qIGRiY29uICovCi0KLQkvKiBFbmFibGUgYWxsIGRlYnVnIGZ1bmN0aW9uYWxpdHkgKi8KLQltb3YJcjAsIzB4ODAwMDAwMDAKLQltY3IJcDE0LDAscjAsYzEwLGMwLDAgIC8qIGRjc3IgKi8KLQotZW5kbG93bGV2ZWxfaW5pdDoKLQltb3YJcGMsIGxyCmRpZmYgLS1naXQgYS9ib2FyZC9kZWx0YS9uYW5kLmMgYi9ib2FyZC9kZWx0YS9uYW5kLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExOWE1ODcuLjAwMDAwMDAKLS0tIGEvYm9hcmQvZGVsdGEvbmFuZC5jCisrKyAvZGV2L251bGwKQEAgLTEsNTU4ICswLDAgQEAKLS8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDYgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZwotICoKLSAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCi0gKiBwcm9qZWN0LgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCi0gKiBNQSAwMjExMS0xMzA3IFVTQQotICovCi0KLSNpbmNsdWRlIDxjb21tb24uaD4KLQotI2lmIGRlZmluZWQoQ09ORklHX0NNRF9OQU5EKQotCi0jaW5jbHVkZSA8bmFuZC5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+Ci0jaW5jbHVkZSA8YXNtL2lvLmg+Ci0KLSNpZmRlZiBDT05GSUdfU1lTX0RGQ19ERUJVRzEKLSMgZGVmaW5lIERGQ19ERUJVRzEoZm10LCBhcmdzLi4uKSBwcmludGYoZm10LCAjI2FyZ3MpCi0jZWxzZQotIyBkZWZpbmUgREZDX0RFQlVHMShmbXQsIGFyZ3MuLi4pCi0jZW5kaWYKLQotI2lmZGVmIENPTkZJR19TWVNfREZDX0RFQlVHMgotIyBkZWZpbmUgREZDX0RFQlVHMihmbXQsIGFyZ3MuLi4pIHByaW50ZihmbXQsICMjYXJncykKLSNlbHNlCi0jIGRlZmluZSBERkNfREVCVUcyKGZtdCwgYXJncy4uLikKLSNlbmRpZgotCi0jaWZkZWYgQ09ORklHX1NZU19ERkNfREVCVUczCi0jIGRlZmluZSBERkNfREVCVUczKGZtdCwgYXJncy4uLikgcHJpbnRmKGZtdCwgIyNhcmdzKQotI2Vsc2UKLSMgZGVmaW5lIERGQ19ERUJVRzMoZm10LCBhcmdzLi4uKQotI2VuZGlmCi0KLS8qIFRoZXNlIHJlYWxseSBkb24ndCBiZWxvbmcgaGVyZSwgYXMgdGhleSBhcmUgc3BlY2lmaWMgdG8gdGhlIE5BTkQgTW9kZWwgKi8KLXN0YXRpYyB1aW50OF90IHNjYW5fZmZfcGF0dGVybltdID0geyAweGZmLCAweGZmIH07Ci0KLXN0YXRpYyBzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgZGVsdGFfYmJ0X2Rlc2NyID0gewotCS5vcHRpb25zID0gMCwKLQkub2ZmcyA9IDAsCi0JLmxlbiA9IDIsCi0JLnBhdHRlcm4gPSBzY2FuX2ZmX3BhdHRlcm4KLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgbmFuZF9lY2NsYXlvdXQgZGVsdGFfb29iID0gewotCS5lY2NieXRlcyA9IDYsCi0JLmVjY3BvcyA9IHsyLCAzLCA0LCA1LCA2LCA3fSwKLQkub29iZnJlZSA9IHsgezgsIDJ9LCB7MTIsIDR9IH0KLX07Ci0KLS8qCi0gKiBub3QgcmVxdWlyZWQgZm9yIE1vbmFoYW5zIERGQwotICovCi1zdGF0aWMgdm9pZCBkZmNfaHdjb250cm9sKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgY21kLCB1bnNpZ25lZCBpbnQgY3RybCkKLXsKLQlyZXR1cm47Ci19Ci0KLSNpZiAwCi0vKiByZWFkIGRldmljZSByZWFkeSBwaW4gKi8KLXN0YXRpYyBpbnQgZGZjX2RldmljZV9yZWFkeShzdHJ1Y3QgbXRkX2luZm8gKm10ZGluZm8pCi17Ci0JaWYoTkRTUiAmIE5EU1JfUkRZKQotCQlyZXR1cm4gMTsKLQllbHNlCi0JCXJldHVybiAwOwotCXJldHVybiAwOwotfQotI2VuZGlmCi0KLS8qCi0gKiBXcml0ZSBidWYgdG8gdGhlIERGQyBDb250cm9sbGVyIERhdGEgQnVmZmVyCi0gKi8KLXN0YXRpYyB2b2lkIGRmY193cml0ZV9idWYoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHVfY2hhciAqYnVmLCBpbnQgbGVuKQotewotCXVuc2lnbmVkIGxvbmcgYnl0ZXNfbXVsdGkgPSBsZW4gJiAweGZmZmZmZmZjOwotCXVuc2lnbmVkIGxvbmcgcmVzdCA9IGxlbiAmIDB4MzsKLQl1bnNpZ25lZCBsb25nICpsb25nX2J1ZjsKLQlpbnQgaTsKLQotCURGQ19ERUJVRzIoImRmY193cml0ZV9idWY6IHdyaXRpbmcgJWQgYnl0ZXMgc3RhcnRpbmcgd2l0aCAweCV4LlxuIiwgbGVuLCAqKCh1bnNpZ25lZCBsb25nKikgYnVmKSk7Ci0JaWYoYnl0ZXNfbXVsdGkpIHsKLQkJZm9yKGk9MDsgaTxieXRlc19tdWx0aTsgaSs9NCkgewotCQkJbG9uZ19idWYgPSAodW5zaWduZWQgbG9uZyopICZidWZbaV07Ci0JCQl3cml0ZWwoKmxvbmdfYnVmLCBORERCKTsKLQkJfQotCX0KLQlpZihyZXN0KSB7Ci0JCXByaW50ZigiZGZjX3dyaXRlX2J1ZjogRVJST1IsIHdyaXRpbmcgbm9uIDQtYnl0ZSBhbGlnbmVkIGRhdGEuXG4iKTsKLQl9Ci0JcmV0dXJuOwotfQotCi0KLXN0YXRpYyB2b2lkIGRmY19yZWFkX2J1ZihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdV9jaGFyKiBjb25zdCBidWYsIGludCBsZW4pCi17Ci0JaW50IGk9MCwgajsKLQotCS8qIHdlIGhhdmUgdG8gYmUgY2FyZWZ1bGwgbm90IHRvIG92ZXJmbG93IHRoZSBidWZmZXIgaWYgbGVuIGlzCi0JICogbm90IGEgbXVsdGlwbGUgb2YgNCAqLwotCXVuc2lnbmVkIGxvbmcgYnl0ZXNfbXVsdGkgPSBsZW4gJiAweGZmZmZmZmZjOwotCXVuc2lnbmVkIGxvbmcgcmVzdCA9IGxlbiAmIDB4MzsKLQl1bnNpZ25lZCBsb25nICpsb25nX2J1ZjsKLQotCURGQ19ERUJVRzMoImRmY19yZWFkX2J1ZjogcmVhZGluZyAlZCBieXRlcy5cbiIsIGxlbik7Ci0JLyogaWYgdGhlcmUgYXJlIGFueSwgZmlyc3QgY29weSBtdWx0aXBsZSBvZiA0IGJ5dGVzICovCi0JaWYoYnl0ZXNfbXVsdGkpIHsKLQkJZm9yKGk9MDsgaTxieXRlc19tdWx0aTsgaSs9NCkgewotCQkJbG9uZ19idWYgPSAodW5zaWduZWQgbG9uZyopICZidWZbaV07Ci0JCQkqbG9uZ19idWYgPSByZWFkbChORERCKTsKLQkJfQotCX0KLQotCS8qIC4uLnRoZW4gdGhlIHJlc3QgKi8KLQlpZihyZXN0KSB7Ci0JCXVuc2lnbmVkIGxvbmcgcmVzdF9kYXRhID0gTkREQjsKLQkJZm9yKGo9MDtqPHJlc3Q7IGorKykKLQkJCWJ1ZltpK2pdID0gKHVfY2hhcikgKChyZXN0X2RhdGE+PmopICYgMHhmZik7Ci0JfQotCi0JcmV0dXJuOwotfQotCi0vKgotICogcmVhZCBhIHdvcmQuIE5vdCBpbXBsZW1lbnRlZCBhcyBub3QgdXNlZCBpbiBOQU5EIGNvZGUuCi0gKi8KLXN0YXRpYyB1MTYgZGZjX3JlYWRfd29yZChzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKLXsKLQlwcmludGYoImRmY19yZWFkX3dvcmQ6IFVOSU1QTEVNRU5URUQuXG4iKTsKLQlyZXR1cm4gMDsKLX0KLQotLyogZ2xvYmFsIHZhciwgdG9vIGJhZDogbWtAdGJkOiBtb3ZlIHRvIC0+cHJpdiBwb2ludGVyICovCi1zdGF0aWMgdW5zaWduZWQgbG9uZyByZWFkX2J1ZiA9IDA7Ci1zdGF0aWMgaW50IGJ5dGVzX3JlYWQgPSAtMTsKLQotLyoKLSAqIHJlYWQgYSBieXRlIGZyb20gTkREQiBCZWNhdXNlIHdlIGNhbiBvbmx5IHJlYWQgNCBieXRlcyBmcm9tIE5EREIgYXQKLSAqIGEgdGltZSwgd2UgYnVmZmVyIHRoZSByZW1haW5pbmcgYnl0ZXMuIFRoZSBidWZmZXIgaXMgcmVzZXQgd2hlbiBhCi0gKiBuZXcgY29tbWFuZCBpcyBzZW50IHRvIHRoZSBjaGlwLgotICoKLSAqIFdBUk5JTkc6Ci0gKiBUaGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgdG8gcmVhZCBzdGF0dXMgYW5kIGlkCi0gKiBieXRlcy4gRm9yIHRoZXNlIGNvbW1hbmRzIGFsd2F5cyA4IGJ5dGVzIG5lZWQgdG8gYmUgcmVhZCBmcm9tCi0gKiBORERCLiBTbyB3ZSByZWFkIGFuZCBkaXNjYXJkIHRoZXNlIGJ5dGVzIHJpZ2h0IG5vdy4gSW4gY2FzZSB0aGlzCi0gKiBmdW5jdGlvbiBpcyB1c2VkIGZvciBhbnl0aGluZyBlbHNlIGluIHRoZSBmdXR1cmUsIHdlIG11c3QgY2hlY2sKLSAqIHdoYXQgd2FzIHRoZSBsYXN0IGNvbW1hbmQgaXNzdWVkIGFuZCByZWFkIHRoZSBhcHByb3ByaWF0ZSBhbW91bnQgb2YKLSAqIGJ5dGVzIHJlc3BlY3RpdmVseS4KLSAqLwotc3RhdGljIHVfY2hhciBkZmNfcmVhZF9ieXRlKHN0cnVjdCBtdGRfaW5mbyAqbXRkKQotewotCXVuc2lnbmVkIGNoYXIgYnl0ZTsKLQl1bnNpZ25lZCBsb25nIGR1bW15OwotCi0JaWYoYnl0ZXNfcmVhZCA8IDApIHsKLQkJcmVhZF9idWYgPSByZWFkbChORERCKTsKLQkJZHVtbXkgPSByZWFkbChORERCKTsKLQkJYnl0ZXNfcmVhZCA9IDA7Ci0JfQotCWJ5dGUgPSAodW5zaWduZWQgY2hhcikgKHJlYWRfYnVmPj4oOCAqIGJ5dGVzX3JlYWQrKykpOwotCWlmKGJ5dGVzX3JlYWQgPj0gNCkKLQkJYnl0ZXNfcmVhZCA9IC0xOwotCi0JREZDX0RFQlVHMigiZGZjX3JlYWRfYnl0ZTogYnl0ZSAldTogMHgleCBvZiAoMHgleCkuXG4iLCBieXRlc19yZWFkIC0gMSwgYnl0ZSwgcmVhZF9idWYpOwotCXJldHVybiBieXRlOwotfQotCi0vKiBjYWxjdWxhdGUgZGVsdGEgYmV0d2VlbiBPU0NSIHZhbHVlcyBzdGFydCBhbmQgbm93ICAqLwotc3RhdGljIHVuc2lnbmVkIGxvbmcgZ2V0X2RlbHRhKHVuc2lnbmVkIGxvbmcgc3RhcnQpCi17Ci0JdW5zaWduZWQgbG9uZyBjdXIgPSByZWFkbChPU0NSKTsKLQotCWlmKGN1ciA8IHN0YXJ0KSAvKiBPU0NSIG92ZXJmbG93ZWQgKi8KLQkJcmV0dXJuIChjdXIgKyAoc3RhcnReMHhmZmZmZmZmZikpOwotCWVsc2UKLQkJcmV0dXJuIChjdXIgLSBzdGFydCk7Ci19Ci0KLS8qIGRlbGF5IGZ1bmN0aW9uLCB0aGlzIGRvZXNuJ3QgYmVsb25nIGhlcmUgKi8KLXN0YXRpYyB2b2lkIHdhaXRfdXModW5zaWduZWQgbG9uZyB1cykKLXsKLQl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gcmVhZGwoT1NDUik7Ci0JdXMgPSBESVZfUk9VTkRfVVAodXMgKiBPU0NSX0NMS19GUkVRLCAxMDAwKTsKLQotCXdoaWxlIChnZXRfZGVsdGEoc3RhcnQpIDwgdXMpIHsKLQkJLyogZG8gbm90aGluZyAqLwotCX0KLX0KLQotc3RhdGljIHZvaWQgZGZjX2NsZWFyX25kZGIodm9pZCkKLXsKLQl3cml0ZWwocmVhZGwoTkRDUikgJiB+TkRDUl9ORF9SVU4sIE5EQ1IpOwotCXdhaXRfdXMoQ09ORklHX1NZU19OQU5EX09USEVSX1RPKTsKLX0KLQotLyogd2FpdF9ldmVudCB3aXRoIHRpbWVvdXQgKi8KLXN0YXRpYyB1bnNpZ25lZCBsb25nIGRmY193YWl0X2V2ZW50KHVuc2lnbmVkIGxvbmcgZXZlbnQpCi17Ci0JdW5zaWduZWQgbG9uZyBuZHNyLCB0aW1lb3V0LCBzdGFydCA9IHJlYWRsKE9TQ1IpOwotCi0JaWYoIWV2ZW50KQotCQlyZXR1cm4gMHhmZjAwMDAwMDsKLQllbHNlIGlmKGV2ZW50ICYgKE5EU1JfQ1MwX0NNREQgfCBORFNSX0NTMF9CQkQpKQotCQl0aW1lb3V0ID0gRElWX1JPVU5EX1VQKENPTkZJR19TWVNfTkFORF9QUk9HX0VSQVNFX1RPCi0JCQkJCSogT1NDUl9DTEtfRlJFUSwgMTAwMCk7Ci0JZWxzZQotCQl0aW1lb3V0ID0gRElWX1JPVU5EX1VQKENPTkZJR19TWVNfTkFORF9PVEhFUl9UTwotCQkJCQkqIE9TQ1JfQ0xLX0ZSRVEsIDEwMDApOwotCi0Jd2hpbGUoMSkgewotCQluZHNyID0gcmVhZGwoTkRTUik7Ci0JCWlmKG5kc3IgJiBldmVudCkgewotCQkJd3JpdGVsKHJlYWRsKE5EU1IpIHwgZXZlbnQsIE5EU1IpOwotCQkJYnJlYWs7Ci0JCX0KLQkJaWYoZ2V0X2RlbHRhKHN0YXJ0KSA+IHRpbWVvdXQpIHsKLQkJCURGQ19ERUJVRzEoImRmY193YWl0X2V2ZW50OiBUSU1FT1VUIHdhaXRpbmcgZm9yIGV2ZW50OiAweCVseC5cbiIsIGV2ZW50KTsKLQkJCXJldHVybiAweGZmMDAwMDAwOwotCQl9Ci0KLQl9Ci0JcmV0dXJuIG5kc3I7Ci19Ci0KLS8qIHdlIGRvbid0IGFsd2F5cyB3YW4ndCB0byBkbyB0aGlzICovCi1zdGF0aWMgdm9pZCBkZmNfbmV3X2NtZCh2b2lkKQotewotCWludCByZXRyeSA9IDA7Ci0JdW5zaWduZWQgbG9uZyBzdGF0dXM7Ci0KLQl3aGlsZShyZXRyeSsrIDw9IENPTkZJR19TWVNfTkFORF9TRU5EQ01EX1JFVFJZKSB7Ci0JCS8qIENsZWFyIE5EU1IgKi8KLQkJd3JpdGVsKDB4ZmZmLCBORFNSKTsKLQotCQkvKiBzZXQgTkRDUltORFJVTl0gKi8KLQkJaWYgKCEocmVhZGwoTkRDUikgJiBORENSX05EX1JVTikpCi0JCQl3cml0ZWwocmVhZGwoTkRDUikgfCBORENSX05EX1JVTiwgTkRDUik7Ci0KLQkJc3RhdHVzID0gZGZjX3dhaXRfZXZlbnQoTkRTUl9XUkNNRFJFUSk7Ci0KLQkJaWYoc3RhdHVzICYgTkRTUl9XUkNNRFJFUSkKLQkJCXJldHVybjsKLQotCQlERkNfREVCVUcyKCJkZmNfbmV3X2NtZDogRkFJTEVEIHRvIGdldCBXUklURUNNRFJFUSwgcmV0cnk6ICVkLlxuIiwgcmV0cnkpOwotCQlkZmNfY2xlYXJfbmRkYigpOwotCX0KLQlERkNfREVCVUcxKCJkZmNfbmV3X2NtZDogZ2l2aW5nIHVwIGFmdGVyICVkIHJldHJpZXMuXG4iLCByZXRyeSk7Ci19Ci0KLS8qIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIFByb2dyYW1tIGFuZCBFcmFzZSBPcGVyYXRpb25zIHRvCi0gKiBjaGVjayBmb3Igc3VjY2VzcyBvciBmYWlsdXJlICovCi1zdGF0aWMgaW50IGRmY193YWl0KHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzKQotewotCXVuc2lnbmVkIGxvbmcgbmRzcj0wLCBldmVudD0wOwotCWludCBzdGF0ZSA9IHRoaXMtPnN0YXRlOwotCi0JaWYoc3RhdGUgPT0gRkxfV1JJVElORykgewotCQlldmVudCA9IE5EU1JfQ1MwX0NNREQgfCBORFNSX0NTMF9CQkQ7Ci0JfSBlbHNlIGlmKHN0YXRlID09IEZMX0VSQVNJTkcpIHsKLQkJZXZlbnQgPSBORFNSX0NTMF9DTUREIHwgTkRTUl9DUzBfQkJEOwotCX0KLQotCW5kc3IgPSBkZmNfd2FpdF9ldmVudChldmVudCk7Ci0KLQlpZigobmRzciAmIE5EU1JfQ1MwX0JCRCkgfHwgKG5kc3IgJiAweGZmMDAwMDAwKSkKLQkJcmV0dXJuKDB4MSk7IC8qIFN0YXR1cyBSZWFkIGVycm9yICovCi0JcmV0dXJuIDA7Ci19Ci0KLS8qIGNtZGZ1bmMgc2VuZCBjb21tYW5kcyB0byB0aGUgREZDICovCi1zdGF0aWMgdm9pZCBkZmNfY21kZnVuYyhzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdW5zaWduZWQgY29tbWFuZCwKLQkJCWludCBjb2x1bW4sIGludCBwYWdlX2FkZHIpCi17Ci0JLyogcmVnaXN0ZXIgc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsgKi8KLQl1bnNpZ25lZCBsb25nIG5kY2IwPTAsIG5kY2IxPTAsIG5kY2IyPTAsIGV2ZW50PTA7Ci0KLQkvKiBjbGVhciB0aGUgdWdseSBieXRlIHJlYWQgYnVmZmVyICovCi0JYnl0ZXNfcmVhZCA9IC0xOwotCXJlYWRfYnVmID0gMDsKLQotCXN3aXRjaCAoY29tbWFuZCkgewotCWNhc2UgTkFORF9DTURfUkVBRDA6Ci0JCURGQ19ERUJVRzMoImRmY19jbWRmdW5jOiBOQU5EX0NNRF9SRUFEMCwgcGFnZV9hZGRyOiAweCV4LCBjb2x1bW46IDB4JXguXG4iLCBwYWdlX2FkZHIsIChjb2x1bW4+PjEpKTsKLQkJZGZjX25ld19jbWQoKTsKLQkJbmRjYjAgPSAoTkFORF9DTURfUkVBRDAgfCAoNDw8MTYpKTsKLQkJY29sdW1uID4+PSAxOyAvKiBhZGp1c3QgZm9yIDE2IGJpdCBidXMgKi8KLQkJbmRjYjEgPSAoKChjb2x1bW4+PjEpICYgMHhmZikgfAotCQkJICgocGFnZV9hZGRyPDw4KSAmIDB4ZmYwMCkgfAotCQkJICgocGFnZV9hZGRyPDw4KSAmIDB4ZmYwMDAwKSB8Ci0JCQkgKChwYWdlX2FkZHI8PDgpICYgMHhmZjAwMDAwMCkpOyAvKiBtYWtlIHRoaXMgMHgwMTAwMDAwMCA/ICovCi0JCWV2ZW50ID0gTkRTUl9SRERSRVE7Ci0JCWdvdG8gd3JpdGVfY21kOwotCWNhc2UgTkFORF9DTURfUkVBRDE6Ci0JCURGQ19ERUJVRzIoImRmY19jbWRmdW5jOiBOQU5EX0NNRF9SRUFEMSB1bmltcGxlbWVudGVkIVxuIik7Ci0JCWdvdG8gZW5kOwotCWNhc2UgTkFORF9DTURfUkVBRE9PQjoKLQkJREZDX0RFQlVHMSgiZGZjX2NtZGZ1bmM6IE5BTkRfQ01EX1JFQURPT0IgdW5pbXBsZW1lbnRlZCFcbiIpOwotCQlnb3RvIGVuZDsKLQljYXNlIE5BTkRfQ01EX1JFQURJRDoKLQkJZGZjX25ld19jbWQoKTsKLQkJREZDX0RFQlVHMigiZGZjX2NtZGZ1bmM6IE5BTkRfQ01EX1JFQURJRC5cbiIpOwotCQluZGNiMCA9IChOQU5EX0NNRF9SRUFESUQgfCAoMyA8PCAyMSkgfCAoMSA8PCAxNikpOyAvKiBhZGRyIGN5Y2xlcyovCi0JCWV2ZW50ID0gTkRTUl9SRERSRVE7Ci0JCWdvdG8gd3JpdGVfY21kOwotCWNhc2UgTkFORF9DTURfUEFHRVBST0c6Ci0JCS8qIHNlbnQgYXMgYSBtdWx0aWNvbW1hbmQgaW4gTkFORF9DTURfU0VRSU4gKi8KLQkJREZDX0RFQlVHMigiZGZjX2NtZGZ1bmM6IE5BTkRfQ01EX1BBR0VQUk9HIGVtcHR5IGR1ZSB0byBtdWx0aWNtZC5cbiIpOwotCQlnb3RvIGVuZDsKLQljYXNlIE5BTkRfQ01EX0VSQVNFMToKLQkJREZDX0RFQlVHMigiZGZjX2NtZGZ1bmM6IE5BTkRfQ01EX0VSQVNFMSwgIHBhZ2VfYWRkcjogMHgleCwgY29sdW1uOiAweCV4LlxuIiwgcGFnZV9hZGRyLCAoY29sdW1uPj4xKSk7Ci0JCWRmY19uZXdfY21kKCk7Ci0JCW5kY2IwID0gKDB4ZDA2MCB8ICgxPDwyNSkgfCAoMjw8MjEpIHwgKDE8PDE5KSB8ICgzPDwxNikpOwotCQluZGNiMSA9IChwYWdlX2FkZHIgJiAweDAwZmZmZmZmKTsKLQkJZ290byB3cml0ZV9jbWQ7Ci0JY2FzZSBOQU5EX0NNRF9FUkFTRTI6Ci0JCURGQ19ERUJVRzIoImRmY19jbWRmdW5jOiBOQU5EX0NNRF9FUkFTRTIgZW1wdHkgZHVlIHRvIG11bHRpY21kLlxuIik7Ci0JCWdvdG8gZW5kOwotCWNhc2UgTkFORF9DTURfU0VRSU46Ci0JCS8qIHNlbmQgUEFHRV9QUk9HIGNvbW1hbmQoMHgxMDgwKSAqLwotCQlkZmNfbmV3X2NtZCgpOwotCQlERkNfREVCVUcyKCJkZmNfY21kZnVuYzogTkFORF9DTURfU0VRSU4vUEFHRV9QUk9HLCAgcGFnZV9hZGRyOiAweCV4LCBjb2x1bW46IDB4JXguXG4iLCBwYWdlX2FkZHIsIChjb2x1bW4+PjEpKTsKLQkJbmRjYjAgPSAoMHgxMDgwIHwgKDE8PDI1KSB8ICgxPDwyMSkgfCAoMTw8MTkpIHwgKDQ8PDE2KSk7Ci0JCWNvbHVtbiA+Pj0gMTsgLyogYWRqdXN0IGZvciAxNiBiaXQgYnVzICovCi0JCW5kY2IxID0gKCgoY29sdW1uPj4xKSAmIDB4ZmYpIHwKLQkJCSAoKHBhZ2VfYWRkcjw8OCkgJiAweGZmMDApIHwKLQkJCSAoKHBhZ2VfYWRkcjw8OCkgJiAweGZmMDAwMCkgfAotCQkJICgocGFnZV9hZGRyPDw4KSAmIDB4ZmYwMDAwMDApKTsgLyogbWFrZSB0aGlzIDB4MDEwMDAwMDAgPyAqLwotCQlldmVudCA9IE5EU1JfV1JEUkVROwotCQlnb3RvIHdyaXRlX2NtZDsKLQljYXNlIE5BTkRfQ01EX1NUQVRVUzoKLQkJREZDX0RFQlVHMigiZGZjX2NtZGZ1bmM6IE5BTkRfQ01EX1NUQVRVUy5cbiIpOwotCQlkZmNfbmV3X2NtZCgpOwotCQluZGNiMCA9IE5BTkRfQ01EX1NUQVRVUyB8ICg0PDwyMSk7Ci0JCWV2ZW50ID0gTkRTUl9SRERSRVE7Ci0JCWdvdG8gd3JpdGVfY21kOwotCWNhc2UgTkFORF9DTURfUkVTRVQ6Ci0JCURGQ19ERUJVRzIoImRmY19jbWRmdW5jOiBOQU5EX0NNRF9SRVNFVC5cbiIpOwotCQluZGNiMCA9IE5BTkRfQ01EX1JFU0VUIHwgKDU8PDIxKTsKLQkJZXZlbnQgPSBORFNSX0NTMF9DTUREOwotCQlnb3RvIHdyaXRlX2NtZDsKLQlkZWZhdWx0OgotCQlwcmludGsoImRmY19jbWRmdW5jOiBlcnJvciwgdW5zdXBwb3J0ZWQgY29tbWFuZC5cbiIpOwotCQlnb3RvIGVuZDsKLQl9Ci0KLSB3cml0ZV9jbWQ6Ci0Jd3JpdGVsKG5kY2IwLCBORENCMCk7Ci0Jd3JpdGVsKG5kY2IxLCBORENCMCk7Ci0Jd3JpdGVsKG5kY2IyLCBORENCMCk7Ci0KLQkvKiAgd2FpdF9ldmVudDogKi8KLQlkZmNfd2FpdF9ldmVudChldmVudCk7Ci0gZW5kOgotCXJldHVybjsKLX0KLQotc3RhdGljIHZvaWQgZGZjX2dwaW9faW5pdCh2b2lkKQotewotCURGQ19ERUJVRzIoIlNldHRpbmcgdXAgREZDIEdQSU8ncy5cbiIpOwotCi0JLyogbm8gaWRlYSB3aGF0IGlzIGRvbmUgaGVyZSwgc2VlIHp5bG9uaXRlLmMgKi8KLQl3cml0ZWwoMHgxLCBHUElPNCk7Ci0KLQl3cml0ZWwoMHgwMDAwMDAwMSwgREZfQUxFX25XRTEpOwotCXdyaXRlbCgweDAwMDAwMDAxLCBERl9BTEVfbldFMik7Ci0Jd3JpdGVsKDB4MDAwMDAwMDEsIERGX25DUzApOwotCXdyaXRlbCgweDAwMDAwMDAxLCBERl9uQ1MxKTsKLQl3cml0ZWwoMHgwMDAwMDAwMSwgREZfbldFKTsKLQl3cml0ZWwoMHgwMDAwMDAwMSwgREZfblJFKTsKLQl3cml0ZWwoMHgwMDAwMDAwMSwgREZfSU8wKTsKLQl3cml0ZWwoMHgwMDAwMDAwMSwgREZfSU84KTsKLQl3cml0ZWwoMHgwMDAwMDAwMSwgREZfSU8xKTsKLQl3cml0ZWwoMHgwMDAwMDAwMSwgREZfSU85KTsKLQl3cml0ZWwoMHgwMDAwMDAwMSwgREZfSU8yKTsKLQl3cml0ZWwoMHgwMDAwMDAwMSwgREZfSU8xMCk7Ci0Jd3JpdGVsKDB4MDAwMDAwMDEsIERGX0lPMyk7Ci0Jd3JpdGVsKDB4MDAwMDAwMDEsIERGX0lPMTEpOwotCXdyaXRlbCgweDAwMDAwMDAxLCBERl9JTzQpOwotCXdyaXRlbCgweDAwMDAwMDAxLCBERl9JTzEyKTsKLQl3cml0ZWwoMHgwMDAwMDAwMSwgREZfSU81KTsKLQl3cml0ZWwoMHgwMDAwMDAwMSwgREZfSU8xMyk7Ci0Jd3JpdGVsKDB4MDAwMDAwMDEsIERGX0lPNik7Ci0Jd3JpdGVsKDB4MDAwMDAwMDEsIERGX0lPMTQpOwotCXdyaXRlbCgweDAwMDAwMDAxLCBERl9JTzcpOwotCXdyaXRlbCgweDAwMDAwMDAxLCBERl9JTzE1KTsKLQotCXdyaXRlbCgweDE5MDEsIERGX25XRSk7Ci0Jd3JpdGVsKDB4MTkwMSwgREZfblJFKTsKLQl3cml0ZWwoMHgxOTAwLCBERl9DTEVfbk9FKTsKLQl3cml0ZWwoMHgxOTAxLCBERl9BTEVfbldFMSk7Ci0Jd3JpdGVsKDB4MTkwMCwgREZfSU5UX1JuQik7Ci19Ci0KLS8qCi0gKiBCb2FyZC1zcGVjaWZpYyBOQU5EIGluaXRpYWxpemF0aW9uLiBUaGUgZm9sbG93aW5nIG1lbWJlcnMgb2YgdGhlCi0gKiBhcmd1bWVudCBhcmUgYm9hcmQtc3BlY2lmaWMgKHBlciBpbmNsdWRlL2xpbnV4L210ZC9uYW5kX25ldy5oKToKLSAqIC0gSU9fQUREUl9SPzogYWRkcmVzcyB0byByZWFkIHRoZSA4IEkvTyBsaW5lcyBvZiB0aGUgZmxhc2ggZGV2aWNlCi0gKiAtIElPX0FERFJfVz86IGFkZHJlc3MgdG8gd3JpdGUgdGhlIDggSS9PIGxpbmVzIG9mIHRoZSBmbGFzaCBkZXZpY2UKLSAqIC0gaHdjb250cm9sOiBoYXJkd2FyZXNwZWNpZmljIGZ1bmN0aW9uIGZvciBhY2Nlc2luZyBjb250cm9sLWxpbmVzCi0gKiAtIGRldl9yZWFkeTogaGFyZHdhcmVzcGVjaWZpYyBmdW5jdGlvbiBmb3IgIGFjY2VzaW5nIGRldmljZSByZWFkeS9idXN5IGxpbmUKLSAqIC0gZW5hYmxlX2h3ZWNjPzogZnVuY3Rpb24gdG8gZW5hYmxlIChyZXNldCkgIGhhcmR3YXJlIGVjYyBnZW5lcmF0b3IuIE11c3QKLSAqICAgb25seSBiZSBwcm92aWRlZCBpZiBhIGhhcmR3YXJlIEVDQyBpcyBhdmFpbGFibGUKLSAqIC0gZWNjLm1vZGU6IG1vZGUgb2YgZWNjLCBzZWUgZGVmaW5lcwotICogLSBjaGlwX2RlbGF5OiBjaGlwIGRlcGVuZGVudCBkZWxheSBmb3IgdHJhbnNmZXJpbmcgZGF0YSBmcm9tIGFycmF5IHRvCi0gKiAgIHJlYWQgcmVncyAodFIpCi0gKiAtIG9wdGlvbnM6IHZhcmlvdXMgY2hpcCBvcHRpb25zLiBUaGV5IGNhbiBwYXJ0bHkgYmUgc2V0IHRvIGluZm9ybQotICogICBuYW5kX3NjYW4gYWJvdXQgc3BlY2lhbCBmdW5jdGlvbmFsaXR5LiBTZWUgdGhlIGRlZmluZXMgZm9yIGZ1cnRoZXIKLSAqICAgZXhwbGFuYXRpb24KLSAqIE1lbWJlcnMgd2l0aCBhICI/IiB3ZXJlIG5vdCBzZXQgaW4gdGhlIG1lcmdlZCB0ZXN0aW5nLU5BTkQgYnJhbmNoLAotICogc28gdGhleSBhcmUgbm90IHNldCBoZXJlIGVpdGhlci4KLSAqLwotaW50IGJvYXJkX25hbmRfaW5pdChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kKQotewotCXVuc2lnbmVkIGxvbmcgdENILCB0Q1MsIHRXSCwgdFdQLCB0UkgsIHRSUCwgdFJQX2hpZ2gsIHRSLCB0V0hSLCB0QVI7Ci0KLQkvKiBzZXQgdXAgR1BJTyBDb250cm9sIFJlZ2lzdGVycyAqLwotCWRmY19ncGlvX2luaXQoKTsKLQotCS8qIHR1cm4gb24gdGhlIE5BTkQgQ29udHJvbGxlciBDbG9jayAoMTA0IE1IeiBAIEQwKSAqLwotCXdyaXRlbChyZWFkbChDS0VOQSkgfCAoQ0tFTkFfNF9OQU5EIHwgQ0tFTkFfOV9TTUMpLCBDS0VOQSk7Ci0KLSN1bmRlZiBDT05GSUdfU1lTX1RJTUlOR19USUdIVAotI2lmbmRlZiBDT05GSUdfU1lTX1RJTUlOR19USUdIVAotCXRDSCA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190Q0ggKiBERkNfQ0xLX1BFUl9VUykgKyAxKSwKLQkJICBERkNfTUFYX3RDSCk7Ci0JdENTID0gTUlOKCgodW5zaWduZWQgbG9uZykgKE5BTkRfVElNSU5HX3RDUyAqIERGQ19DTEtfUEVSX1VTKSArIDEpLAotCQkgIERGQ19NQVhfdENTKTsKLQl0V0ggPSBNSU4oKCh1bnNpZ25lZCBsb25nKSAoTkFORF9USU1JTkdfdFdIICogREZDX0NMS19QRVJfVVMpICsgMSksCi0JCSAgREZDX01BWF90V0gpOwotCXRXUCA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190V1AgKiBERkNfQ0xLX1BFUl9VUykgKyAxKSwKLQkJICBERkNfTUFYX3RXUCk7Ci0JdFJIID0gTUlOKCgodW5zaWduZWQgbG9uZykgKE5BTkRfVElNSU5HX3RSSCAqIERGQ19DTEtfUEVSX1VTKSArIDEpLAotCQkgIERGQ19NQVhfdFJIKTsKLQl0UlAgPSBNSU4oKCh1bnNpZ25lZCBsb25nKSAoTkFORF9USU1JTkdfdFJQICogREZDX0NMS19QRVJfVVMpICsgMSksCi0JCSAgREZDX01BWF90UlApOwotCXRSID0gTUlOKCgodW5zaWduZWQgbG9uZykgKE5BTkRfVElNSU5HX3RSICogREZDX0NMS19QRVJfVVMpICsgMSksCi0JCSBERkNfTUFYX3RSKTsKLQl0V0hSID0gTUlOKCgodW5zaWduZWQgbG9uZykgKE5BTkRfVElNSU5HX3RXSFIgKiBERkNfQ0xLX1BFUl9VUykgKyAxKSwKLQkJICAgREZDX01BWF90V0hSKTsKLQl0QVIgPSBNSU4oKCh1bnNpZ25lZCBsb25nKSAoTkFORF9USU1JTkdfdEFSICogREZDX0NMS19QRVJfVVMpICsgMSksCi0JCSAgREZDX01BWF90QVIpOwotI2Vsc2UgLyogdGhpcyBpcyB0aGUgdGlnaHQgdGltaW5nICovCi0KLQl0Q0ggPSBNSU4oKCh1bnNpZ25lZCBsb25nKSAoTkFORF9USU1JTkdfdENIICogREZDX0NMS19QRVJfVVMpKSwKLQkJICBERkNfTUFYX3RDSCk7Ci0JdENTID0gTUlOKCgodW5zaWduZWQgbG9uZykgKE5BTkRfVElNSU5HX3RDUyAqIERGQ19DTEtfUEVSX1VTKSksCi0JCSAgREZDX01BWF90Q1MpOwotCXRXSCA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190V0ggKiBERkNfQ0xLX1BFUl9VUykpLAotCQkgIERGQ19NQVhfdFdIKTsKLQl0V1AgPSBNSU4oKCh1bnNpZ25lZCBsb25nKSAoTkFORF9USU1JTkdfdFdQICogREZDX0NMS19QRVJfVVMpKSwKLQkJICBERkNfTUFYX3RXUCk7Ci0JdFJIID0gTUlOKCgodW5zaWduZWQgbG9uZykgKE5BTkRfVElNSU5HX3RSSCAqIERGQ19DTEtfUEVSX1VTKSksCi0JCSAgREZDX01BWF90UkgpOwotCXRSUCA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190UlAgKiBERkNfQ0xLX1BFUl9VUykpLAotCQkgIERGQ19NQVhfdFJQKTsKLQl0UiA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190UiAqIERGQ19DTEtfUEVSX1VTKSAtIHRDSCAtIDIpLAotCQkgREZDX01BWF90Uik7Ci0JdFdIUiA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190V0hSICogREZDX0NMS19QRVJfVVMpIC0gdENIIC0gMiksCi0JCSAgIERGQ19NQVhfdFdIUik7Ci0JdEFSID0gTUlOKCgodW5zaWduZWQgbG9uZykgKE5BTkRfVElNSU5HX3RBUiAqIERGQ19DTEtfUEVSX1VTKSAtIDIpLAotCQkgIERGQ19NQVhfdEFSKTsKLSNlbmRpZiAvKiBDT05GSUdfU1lTX1RJTUlOR19USUdIVCAqLwotCi0KLQlERkNfREVCVUcyKCJ0Q0g9JXUsIHRDUz0ldSwgdFdIPSV1LCB0V1A9JXUsIHRSSD0ldSwgdFJQPSV1LCB0Uj0ldSwgdFdIUj0ldSwgdEFSPSV1LlxuIiwgdENILCB0Q1MsIHRXSCwgdFdQLCB0UkgsIHRSUCwgdFIsIHRXSFIsIHRBUik7Ci0KLQkvKiB0UlAgdmFsdWUgaXMgc3BsaXQgaW4gdGhlIHJlZ2lzdGVyICovCi0JaWYodFJQICYgKDEgPDwgNCkpIHsKLQkJdFJQX2hpZ2ggPSAxOwotCQl0UlAgJj0gfigxIDw8IDQpOwotCX0gZWxzZSB7Ci0JCXRSUF9oaWdoID0gMDsKLQl9Ci0KLQl3cml0ZWwoKHRDSCA8PCAxOSkgfAotCQkodENTIDw8IDE2KSB8Ci0JCSh0V0ggPDwgMTEpIHwKLQkJKHRXUCA8PCA4KSB8Ci0JCSh0UlBfaGlnaCA8PCA2KSB8Ci0JCSh0UkggPDwgMykgfAotCQkodFJQIDw8IDApLAotCQlORFRSMENTMCk7Ci0KLQl3cml0ZWwoKHRSIDw8IDE2KSB8Ci0JCSh0V0hSIDw8IDQpIHwKLQkJKHRBUiA8PCAwKSwKLQkJTkRUUjFDUzApOwotCi0JLyogSWYgaXQgZG9lc24ndCB3b3JrICh1bmxpa2VseSkgdGhpbmsgYWJvdXQ6Ci0JICogIC0gZWNjIGVuYWJsZQotCSAqICAtIGNoaXAgc2VsZWN0IGRvbid0IGNhcmUKLQkgKiAgLSByZWFkIGlkIGJ5dGUgY291bnQKLQkgKgotCSAqIEludGVudGlvbmFsbHkgZW5hYmxlZCBieSBub3Qgc2V0dGluZyBiaXRzOgotCSAqICAtIGRtYSAoRE1BX0VOKQotCSAqICAtIHBhZ2Ugc2l6ZSA9IDUxMgotCSAqICAtIGNzIGRvbid0IGNhcmUsIHNlZSBpZiB3ZSBjYW4gZW5hYmxlIGxhdGVyIQotCSAqICAtIHJvdyBhZGRyZXNzIHN0YXJ0IHBvc2l0aW9uIChhZnRlciBzZWNvbmQgY3ljbGUpCi0JICogIC0gcGFnZXMgcGVyIGJsb2NrID0gMzIKLQkgKiAgLSBORF9SRFkgOiBjbGVhcnMgY29tbWFuZCBidWZmZXIKLQkgKi8KLQkvKiBORENSX05DU1ggfAkJL1wqIENoaXAgc2VsZWN0IGJ1c3kgZG9uJ3QgY2FyZSAqXC8gKi8KLQotCXdyaXRlbChORENSX1NQQVJFX0VOIHwJCS8qIHVzZSB0aGUgc3BhcmUgYXJlYSAqLwotCQlORENSX0RXSURUSF9DIHwJCS8qIDE2Yml0IERGQyBkYXRhIGJ1cyB3aWR0aCAgKi8KLQkJTkRDUl9EV0lEVEhfTSB8CQkvKiAxNiBiaXQgRmxhc2ggZGV2aWNlIGRhdGEgYnVzIHdpZHRoICovCi0JCSgyIDw8IDE2KSB8CQkvKiByZWFkIGlkIGNvdW50ID0gNyA/Pz8/IG1rQHRiZCAqLwotCQlORENSX05EX0FSQl9FTiB8CS8qIGVuYWJsZSBidXMgYXJiaXRlciAqLwotCQlORENSX1JEWU0gfAkJLyogZmxhc2ggZGV2aWNlIHJlYWR5IGlyIG1hc2tlZCAqLwotCQlORENSX0NTMF9QQUdFRE0gfAkvKiBORF9uQ1N4IHBhZ2UgZG9uZSBpciBtYXNrZWQgKi8KLQkJTkRDUl9DUzFfUEFHRURNIHwKLQkJTkRDUl9DUzBfQ01ERE0gfAkvKiBORF9DU3ggY29tbWFuZCBkb25lIGlyIG1hc2tlZCAqLwotCQlORENSX0NTMV9DTURETSB8Ci0JCU5EQ1JfQ1MwX0JCRE0gfAkJLyogTkRfQ1N4IGJhZCBibG9jayBkZXRlY3QgaXIgbWFza2VkICovCi0JCU5EQ1JfQ1MxX0JCRE0gfAotCQlORENSX0RCRVJSTSB8CQkvKiBkb3VibGUgYml0IGVycm9yIGlyIG1hc2tlZCAqLwotCQlORENSX1NCRVJSTSB8CQkvKiBzaW5nbGUgYml0IGVycm9yIGlyIG1hc2tlZCAqLwotCQlORENSX1dSRFJFUU0gfAkJLyogd3JpdGUgZGF0YSByZXF1ZXN0IGlyIG1hc2tlZCAqLwotCQlORENSX1JERFJFUU0gfAkJLyogcmVhZCBkYXRhIHJlcXVlc3QgaXIgbWFza2VkICovCi0JCU5EQ1JfV1JDTURSRVFNLAkJLyogd3JpdGUgY29tbWFuZCByZXF1ZXN0IGlyIG1hc2tlZCAqLwotCQlORENSKTsKLQotCi0JLyogd2FpdCAxMCB1cyBkdWUgdG8gY21kIGJ1ZmZlciBjbGVhciByZXNldCAqLwotCS8qCXdhaXQoMTApOyAqLwotCi0KLQluYW5kLT5jbWRfY3RybCA9IGRmY19od2NvbnRyb2w7Ci0vKgluYW5kLT5kZXZfcmVhZHkgPSBkZmNfZGV2aWNlX3JlYWR5OyAqLwotCW5hbmQtPmVjYy5tb2RlID0gTkFORF9FQ0NfU09GVDsKLQluYW5kLT5lY2MubGF5b3V0ID0gJmRlbHRhX29vYjsKLQluYW5kLT5vcHRpb25zID0gTkFORF9CVVNXSURUSF8xNjsKLQluYW5kLT53YWl0ZnVuYyA9IGRmY193YWl0OwotCW5hbmQtPnJlYWRfYnl0ZSA9IGRmY19yZWFkX2J5dGU7Ci0JbmFuZC0+cmVhZF93b3JkID0gZGZjX3JlYWRfd29yZDsKLQluYW5kLT5yZWFkX2J1ZiA9IGRmY19yZWFkX2J1ZjsKLQluYW5kLT53cml0ZV9idWYgPSBkZmNfd3JpdGVfYnVmOwotCi0JbmFuZC0+Y21kZnVuYyA9IGRmY19jbWRmdW5jOwotCW5hbmQtPmJhZGJsb2NrX3BhdHRlcm4gPSAmZGVsdGFfYmJ0X2Rlc2NyOwotCXJldHVybiAwOwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9kdTQ0MC9pbml0LlMgYi9ib2FyZC9lc2QvZHU0NDAvaW5pdC5TCmluZGV4IDM1MTA5NWEuLjg4NTY1ZDkgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9kdTQ0MC9pbml0LlMKKysrIGIvYm9hcmQvZXNkL2R1NDQwL2luaXQuUwpAQCAtMjEsNiArMjEsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxwcGNfYXNtLnRtcGw+CiAjaW5jbHVkZSA8YXNtL21tdS5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL3BtYzQ0MC9pbml0LlMgYi9ib2FyZC9lc2QvcG1jNDQwL2luaXQuUwppbmRleCA5NmY3MjA2Li5iOTlhOGU5IDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvcG1jNDQwL2luaXQuUworKysgYi9ib2FyZC9lc2QvcG1jNDQwL2luaXQuUwpAQCAtMTksNiArMTksNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxwcGNfYXNtLnRtcGw+CiAjaW5jbHVkZSA8YXNtL21tdS5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgpkaWZmIC0tZ2l0IGEvYm9hcmQvZmFkcy9mYWRzLmggYi9ib2FyZC9mYWRzL2ZhZHMuaAppbmRleCAzOGFiYzcwLi4zZGM1MzU4IDEwMDY0NAotLS0gYS9ib2FyZC9mYWRzL2ZhZHMuaAorKysgYi9ib2FyZC9mYWRzL2ZhZHMuaApAQCAtMTY0LDkgKzE2NCw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy9NYWtlZmlsZSBiL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL01ha2VmaWxlCmluZGV4IDhhYTcyNTUuLjdhNTZmYTIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL01ha2VmaWxlCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL01ha2VmaWxlCkBAIC0yNyw3ICsyNyw4IEBACiBMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCiAKIENPQkpTLXkJKz0gJChCT0FSRCkubwotQ09CSlMtJChDT05GSUdfRERSX1NQRCkJKz0gZGRyLm8KK0NPQkpTLXkJKz0gZGRyLm8KK0NPQkpTLSQoQ09ORklHX1A0MDgwRFMpCSs9IHA0MDgwZHNfZGRyLm8KIENPQkpTLSQoQ09ORklHX1BDSSkJKz0gcGNpLm8KIENPQkpTLXkJKz0gbGF3Lm8KIENPQkpTLXkJKz0gdGxiLm8KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL2NvcmVuZXRfZHMuYyBiL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL2NvcmVuZXRfZHMuYwppbmRleCA0OGQ5NWQ2Li42OGM2M2FjIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy9jb3JlbmV0X2RzLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL2NvcmVuZXRfZHMvY29yZW5ldF9kcy5jCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSA8YXNtL2NhY2hlLmg+CiAjaW5jbHVkZSA8YXNtL2ltbWFwXzg1eHguaD4KICNpbmNsdWRlIDxhc20vZnNsX2xhdy5oPgotI2luY2x1ZGUgPGFzbS9mc2xfZGRyX3NkcmFtLmg+CiAjaW5jbHVkZSA8YXNtL2ZzbF9zZXJkZXMuaD4KICNpbmNsdWRlIDxhc20vZnNsX3BvcnRhbHMuaD4KICNpbmNsdWRlIDxhc20vZnNsX2xpb2RuLmg+CkBAIC0xOTYsMjAgKzE5NSw2IEBACiAJcmV0dXJuIDA7CiB9CiAKLXBoeXNfc2l6ZV90IGluaXRkcmFtKGludCBib2FyZF90eXBlKQotewotCXBoeXNfc2l6ZV90IGRyYW1fc2l6ZTsKLQotCXB1dHMoIkluaXRpYWxpemluZy4uLi5cbiIpOwotCi0JZHJhbV9zaXplID0gZnNsX2Rkcl9zZHJhbSgpOwotCi0Jc2V0dXBfZGRyX3RsYnMoZHJhbV9zaXplIC8gMHgxMDAwMDApOwotCi0JcHV0cygiICAgIEREUjogIik7Ci0JcmV0dXJuIGRyYW1fc2l6ZTsKLX0KLQogI2lmZGVmIENPTkZJR19NUAogdm9pZCBib2FyZF9sbWJfcmVzZXJ2ZShzdHJ1Y3QgbG1iICpsbWIpCiB7CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy9kZHIuYyBiL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL2Rkci5jCmluZGV4IDE4YWRmMmYuLjJlZTAxODggMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL2Rkci5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL2Rkci5jCkBAIC04LDkgKzgsMTAzIEBACiAKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxpMmMuaD4KLQorI2luY2x1ZGUgPGh3Y29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL21tdS5oPgogI2luY2x1ZGUgPGFzbS9mc2xfZGRyX3NkcmFtLmg+CiAjaW5jbHVkZSA8YXNtL2ZzbF9kZHJfZGltbV9wYXJhbXMuaD4KKyNpbmNsdWRlIDxhc20vZnNsX2xhdy5oPgorCitERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKworZXh0ZXJuIHZvaWQgZnNsX2Rkcl9zZXRfbWVtY3RsX3JlZ3MoY29uc3QgZnNsX2Rkcl9jZmdfcmVnc190ICpyZWdzLAorCQkJCSAgIHVuc2lnbmVkIGludCBjdHJsX251bSk7CisKKworLyoKKyAqIEZpeGVkIHNkcmFtIGluaXQgLS0gZG9lc24ndCB1c2Ugc2VyaWFsIHByZXNlbmNlIGRldGVjdC4KKyAqLworZXh0ZXJuIGZpeGVkX2Rkcl9wYXJtX3QgZml4ZWRfZGRyX3Bhcm1fMFtdOworI2lmIChDT05GSUdfTlVNX0REUl9DT05UUk9MTEVSUyA9PSAyKQorZXh0ZXJuIGZpeGVkX2Rkcl9wYXJtX3QgZml4ZWRfZGRyX3Bhcm1fMVtdOworI2VuZGlmCisKK3BoeXNfc2l6ZV90IGZpeGVkX3NkcmFtKHZvaWQpCit7CisJaW50IGk7CisJc3lzX2luZm9fdCBzeXNpbmZvOworCWNoYXIgYnVmWzMyXTsKKwlmc2xfZGRyX2NmZ19yZWdzX3QgZGRyX2NmZ19yZWdzOworCXBoeXNfc2l6ZV90IGRkcl9zaXplOworCXVuc2lnbmVkIGludCBsYXdiYXIxX3RhcmdldF9pZDsKKworCWdldF9zeXNfaW5mbygmc3lzaW5mbyk7CisJcHJpbnRmKCJDb25maWd1cmluZyBERFIgZm9yICVzIE1UL3MgZGF0YSByYXRlXG4iLAorCQkJCXN0cm1oeihidWYsIHN5c2luZm8uZnJlcUREUkJ1cykpOworCisJZm9yIChpID0gMDsgZml4ZWRfZGRyX3Bhcm1fMFtpXS5tYXhfZnJlcSA+IDA7IGkrKykgeworCQlpZiAoKHN5c2luZm8uZnJlcUREUkJ1cyA+IGZpeGVkX2Rkcl9wYXJtXzBbaV0ubWluX2ZyZXEpICYmCisJCSAgIChzeXNpbmZvLmZyZXFERFJCdXMgPD0gZml4ZWRfZGRyX3Bhcm1fMFtpXS5tYXhfZnJlcSkpIHsKKwkJCW1lbWNweSgmZGRyX2NmZ19yZWdzLAorCQkJCWZpeGVkX2Rkcl9wYXJtXzBbaV0uZGRyX3NldHRpbmdzLAorCQkJCXNpemVvZihkZHJfY2ZnX3JlZ3MpKTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKGZpeGVkX2Rkcl9wYXJtXzBbaV0ubWF4X2ZyZXEgPT0gMCkKKwkJcGFuaWMoIlVuc3VwcG9ydGVkIEREUiBkYXRhIHJhdGUgJXMgTVQvcyBkYXRhIHJhdGVcbiIsCisJCQlzdHJtaHooYnVmLCBzeXNpbmZvLmZyZXFERFJCdXMpKTsKKworCWRkcl9zaXplID0gKHBoeXNfc2l6ZV90KSBDT05GSUdfU1lTX1NEUkFNX1NJWkUgKiAxMDI0ICogMTAyNDsKKwlmc2xfZGRyX3NldF9tZW1jdGxfcmVncygmZGRyX2NmZ19yZWdzLCAwKTsKKworI2lmIChDT05GSUdfTlVNX0REUl9DT05UUk9MTEVSUyA9PSAyKQorCW1lbWNweSgmZGRyX2NmZ19yZWdzLAorCQlmaXhlZF9kZHJfcGFybV8xW2ldLmRkcl9zZXR0aW5ncywKKwkJc2l6ZW9mKGRkcl9jZmdfcmVncykpOworCWZzbF9kZHJfc2V0X21lbWN0bF9yZWdzKCZkZHJfY2ZnX3JlZ3MsIDEpOworI2VuZGlmCisKKwkvKgorCSAqIHNldHVwIGxhd3MgZm9yIEREUi4gSWYgbm90IGludGVybGVhdmluZywgcHJlc3VtaW5nIGhhbGYgbWVtb3J5IG9uCisJICogRERSMSBhbmQgdGhlIG90aGVyIGhhbGYgb24gRERSMgorCSAqLworCWlmIChmaXhlZF9kZHJfcGFybV8wW2ldLmRkcl9zZXR0aW5ncy0+Y3NbMF0uY29uZmlnICYgMHgyMDAwMDAwMCkgeworCQlpZiAoc2V0X2Rkcl9sYXdzKENPTkZJR19TWVNfRERSX1NEUkFNX0JBU0UsCisJCQkJIGRkcl9zaXplLAorCQkJCSBMQVdfVFJHVF9JRl9ERFJfSU5UUkxWKSA8IDApIHsKKwkJCXByaW50ZigiRVJST1Igc2V0dGluZyBMb2NhbCBBY2Nlc3MgV2luZG93cyBmb3IgRERSXG4iKTsKKwkJCXJldHVybiAwOworCQl9CisJfSBlbHNlIHsKKyNpZiAoQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlMgPT0gMikKKwkJLyogV2UgcmVxdWlyZSBib3RoIGNvbnRyb2xsZXJzIGhhdmUgaWRlbnRpY2FsIERJTU1zICovCisJCWxhd2JhcjFfdGFyZ2V0X2lkID0gTEFXX1RSR1RfSUZfRERSXzE7CisJCWlmIChzZXRfZGRyX2xhd3MoQ09ORklHX1NZU19ERFJfU0RSQU1fQkFTRSwKKwkJCQkgZGRyX3NpemUgLyAyLAorCQkJCSBsYXdiYXIxX3RhcmdldF9pZCkgPCAwKSB7CisJCQlwcmludGYoIkVSUk9SIHNldHRpbmcgTG9jYWwgQWNjZXNzIFdpbmRvd3MgZm9yIEREUlxuIik7CisJCQlyZXR1cm4gMDsKKwkJfQorCQlsYXdiYXIxX3RhcmdldF9pZCA9IExBV19UUkdUX0lGX0REUl8yOworCQlpZiAoc2V0X2Rkcl9sYXdzKENPTkZJR19TWVNfRERSX1NEUkFNX0JBU0UgKyBkZHJfc2l6ZSAvIDIsCisJCQkJIGRkcl9zaXplIC8gMiwKKwkJCQkgbGF3YmFyMV90YXJnZXRfaWQpIDwgMCkgeworCQkJcHJpbnRmKCJFUlJPUiBzZXR0aW5nIExvY2FsIEFjY2VzcyBXaW5kb3dzIGZvciBERFJcbiIpOworCQkJcmV0dXJuIDA7CisJCX0KKyNlbHNlCisJCWxhd2JhcjFfdGFyZ2V0X2lkID0gTEFXX1RSR1RfSUZfRERSXzE7CisJCWlmIChzZXRfZGRyX2xhd3MoQ09ORklHX1NZU19ERFJfU0RSQU1fQkFTRSwKKwkJCQkgZGRyX3NpemUsCisJCQkJIGxhd2JhcjFfdGFyZ2V0X2lkKSA8IDApIHsKKwkJCXByaW50ZigiRVJST1Igc2V0dGluZyBMb2NhbCBBY2Nlc3MgV2luZG93cyBmb3IgRERSXG4iKTsKKwkJCXJldHVybiAwOworCQl9CisjZW5kaWYKKwl9CisJcmV0dXJuIGRkcl9zaXplOworfQogCiBzdGF0aWMgdm9pZCBnZXRfc3BkKGRkcjNfc3BkX2VlcHJvbV90ICpzcGQsIHVuc2lnbmVkIGNoYXIgaTJjX2FkZHJlc3MpCiB7CkBAIC0xOTAsMyArMjg0LDM4IEBACiAJLyogRW5hYmxlIFpRIGNhbGlicmF0aW9uICovCiAJcG9wdHMtPnpxX2VuID0gMTsKIH0KKworcGh5c19zaXplX3QgaW5pdGRyYW0oaW50IGJvYXJkX3R5cGUpCit7CisJcGh5c19zaXplX3QgZHJhbV9zaXplOworCWludCB1c2Vfc3BkID0gMDsKKworCXB1dHMoIkluaXRpYWxpemluZy4uLi4iKTsKKworI2lmZGVmIENPTkZJR19ERFJfU1BECisJLyogaWYgaHdjb25maWcgaXMgbm90IGVuYWJsZWQsIG9yICJzZHJhbSIgaXMgbm90IGRlZmluZWQsIHVzZSBzcGQgKi8KKwlpZiAoaHdjb25maWdfc3ViKCJmc2xfZGRyIiwgInNkcmFtIikpIHsKKwkJaWYgKGh3Y29uZmlnX3N1YmFyZ19jbXAoImZzbF9kZHIiLCAic2RyYW0iLCAic3BkIikpCisJCQl1c2Vfc3BkID0gMTsKKwkJZWxzZSBpZiAoaHdjb25maWdfc3ViYXJnX2NtcCgiZnNsX2RkciIsICJzZHJhbSIsICJmaXhlZCIpKQorCQkJdXNlX3NwZCA9IDA7CisJCWVsc2UKKwkJCXVzZV9zcGQgPSAxOworCX0gZWxzZQorCQl1c2Vfc3BkID0gMTsKKyNlbmRpZgorCisJaWYgKHVzZV9zcGQpIHsKKwkJcHV0cygidXNpbmcgU1BEXG4iKTsKKwkJZHJhbV9zaXplID0gZnNsX2Rkcl9zZHJhbSgpOworCX0gZWxzZSB7CisJCXB1dHMoInVzaW5nIGZpeGVkIHBhcmFtZXRlcnNcbiIpOworCQlkcmFtX3NpemUgPSBmaXhlZF9zZHJhbSgpOworCX0KKworCWRyYW1fc2l6ZSA9IHNldHVwX2Rkcl90bGJzKGRyYW1fc2l6ZSAvIDB4MTAwMDAwKTsKKwlkcmFtX3NpemUgKj0gMHgxMDAwMDA7CisKKwlwdXRzKCIgICAgRERSOiAiKTsKKwlyZXR1cm4gZHJhbV9zaXplOworfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL2NvcmVuZXRfZHMvcDQwODBkc19kZHIuYyBiL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL3A0MDgwZHNfZGRyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFkODlmZgotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL3A0MDgwZHNfZGRyLmMKQEAgLTAsMCArMSwzNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOS0yMDEwIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIFZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8YXNtL2ZzbF9kZHJfc2RyYW0uaD4KKworI2RlZmluZSBEQVRBUkFURV84MDBNSFoJCQk4MDAwMDAwMDAKKyNkZWZpbmUgREFUQVJBVEVfOTAwTUhaCQkJOTAwMDAwMDAwCisjZGVmaW5lIERBVEFSQVRFXzEwMDBNSFoJCTEwMDAwMDAwMDAKKyNkZWZpbmUgREFUQVJBVEVfMTIwME1IWgkJMTIwMDAwMDAwMAorI2RlZmluZSBEQVRBUkFURV8xMzAwTUhaCQkxMzAwMDAwMDAwCisKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzNfMTIwMAkweDAxMDMwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1RJTUlOR18wXzEyMDAJMHhDQzU1MDEwNAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9USU1JTkdfMV8xMjAwCTB4ODY4RkFBNDUKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzJfMTIwMAkweDBGQjhBOTEyCisjZGVmaW5lIENPTkZJR19TWVNfRERSX01PREVfMV8xMjAwCTB4MDA0NDFBNDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfTU9ERV8yXzEyMDAJMHgwMDEwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9JTlRFUlZBTF8xMjAwCTB4MTI0ODAxMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ0xLX0NUUkxfMTIwMAkweDAyODAwMDAwCisKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzNfMTAwMAkweDAwMDIwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1RJTUlOR18wXzEwMDAJMHhDQzQ0MDEwNAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9USU1JTkdfMV8xMDAwCTB4NzI3REY5NDQKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzJfMTAwMAkweDBGQjA4OENGCisjZGVmaW5lIENPTkZJR19TWVNfRERSX01PREVfMV8xMDAwCTB4MDA0NDE4MzAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfTU9ERV8yXzEwMDAJMHgwMDA4MDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9JTlRFUlZBTF8xMDAwCTB4MEYzQzAxMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ0xLX0NUUkxfMTAwMAkweDAyODAwMDAwCisKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzNfOTAwCTB4MDAwMjAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzBfOTAwCTB4Q0M0NDAxMDQKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzFfOTAwCTB4NjE2YmE4NDQKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzJfOTAwCTB4MGZiMDg4Y2UKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfTU9ERV8xXzkwMAkweDAwNDQxNjIwCisjZGVmaW5lIENPTkZJR19TWVNfRERSX01PREVfMl85MDAJMHgwMDA4MDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9JTlRFUlZBTF85MDAJMHgwZGI2MDEwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9DTEtfQ1RSTF85MDAJMHgwMjgwMDAwMAorCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1RJTUlOR18zXzgwMAkweDAwMDIwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1RJTUlOR18wXzgwMAkweGNjMzMwMTA0CisjZGVmaW5lIENPTkZJR19TWVNfRERSX1RJTUlOR18xXzgwMAkweDZmNmI0NzQ0CisjZGVmaW5lIENPTkZJR19TWVNfRERSX1RJTUlOR18yXzgwMAkweDBmYTg4OGNjCisjZGVmaW5lIENPTkZJR19TWVNfRERSX01PREVfMV84MDAJMHgwMDQ0MTQyMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9NT0RFXzJfODAwCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfSU5URVJWQUxfODAwCTB4MGMzMDAxMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ0xLX0NUUkxfODAwCTB4MDI4MDAwMDAKKworI2RlZmluZSBDT05GSUdfU1lTX0REUl9DUzBfQk5EUwkJMHgwMDAwMDBGRgorI2RlZmluZSBDT05GSUdfU1lTX0REUl9DUzFfQk5EUwkJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9DUzJfQk5EUwkJMHgwMDAwMDBGRgorI2RlZmluZSBDT05GSUdfU1lTX0REUl9DUzNfQk5EUwkJMHgwMDAwMDBGRgorI2RlZmluZSBDT05GSUdfU1lTX0REUjJfQ1MwX0JORFMJMHgwMDAwMDBGRgorI2RlZmluZSBDT05GSUdfU1lTX0REUjJfQ1MxX0JORFMJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUjJfQ1MyX0JORFMJMHgwMDAwMDBGRgorI2RlZmluZSBDT05GSUdfU1lTX0REUjJfQ1MzX0JORFMJMHgwMDAwMDBGRgorI2RlZmluZSBDT05GSUdfU1lTX0REUl9DUzBfQ09ORklHCTB4QTAwNDQyMDIKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ1MwX0NPTkZJR18yCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ1MxX0NPTkZJRwkweDgwMDA0MjAyCisjZGVmaW5lIENPTkZJR19TWVNfRERSX0NTMl9DT05GSUcJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9DUzNfQ09ORklHCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0NTMF9DT05GSUcJMHg4MDA0NDIwMgorI2RlZmluZSBDT05GSUdfU1lTX0REUjJfQ1MxX0NPTkZJRwkweDgwMDA0MjAyCisjZGVmaW5lIENPTkZJR19TWVNfRERSMl9DUzJfQ09ORklHCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0NTM19DT05GSUcJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9JTklUX0FERFIJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9JTklUX0VYVF9BRERSCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ1MxX0NPTkZJRwkweDgwMDA0MjAyCisjZGVmaW5lIENPTkZJR19TWVNfRERSX0RBVEFfSU5JVAkweGRlYWRiZWVmCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1RJTUlOR180CQkweDAwMDAwMDAxCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1RJTUlOR181CQkweDAyNDAxNDAwCisjZGVmaW5lIENPTkZJR19TWVNfRERSX01PREVfQ09OVFJPTAkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1pRX0NOVEwJCTB4ODkwODA2MDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfV1JMVkxfQ05UTAkweDg2NzVGNjA3CisjZGVmaW5lIENPTkZJR19TWVNfRERSX1NEUkFNX0NGRwkweEU3MDQ0MDAwCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1NEUkFNX0NGRzIJMHgyNDQwMTAzMQorI2RlZmluZSBDT05GSUdfU1lTX0REUl9SQ1dfMQkJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9SQ1dfMgkJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfTUVNX0lOSVRfVkFMVUUJCTB4ZGVhZGJlZWYKKworZnNsX2Rkcl9jZmdfcmVnc190IGRkcl9jZmdfcmVnc184MDAgPSB7CisJLmNzWzBdLmJuZHMgPSBDT05GSUdfU1lTX0REUl9DUzBfQk5EUywKKwkuY3NbMV0uYm5kcyA9IENPTkZJR19TWVNfRERSX0NTMV9CTkRTLAorCS5jc1syXS5ibmRzID0gQ09ORklHX1NZU19ERFJfQ1MyX0JORFMsCisJLmNzWzNdLmJuZHMgPSBDT05GSUdfU1lTX0REUl9DUzNfQk5EUywKKwkuY3NbMF0uY29uZmlnID0gQ09ORklHX1NZU19ERFJfQ1MwX0NPTkZJRywKKwkuY3NbMF0uY29uZmlnXzIgPSBDT05GSUdfU1lTX0REUl9DUzBfQ09ORklHXzIsCisJLmNzWzFdLmNvbmZpZyA9IENPTkZJR19TWVNfRERSX0NTMV9DT05GSUcsCisJLmNzWzJdLmNvbmZpZyA9IENPTkZJR19TWVNfRERSX0NTMl9DT05GSUcsCisJLmNzWzNdLmNvbmZpZyA9IENPTkZJR19TWVNfRERSX0NTM19DT05GSUcsCisJLnRpbWluZ19jZmdfMyA9IENPTkZJR19TWVNfRERSX1RJTUlOR18zXzgwMCwKKwkudGltaW5nX2NmZ18wID0gQ09ORklHX1NZU19ERFJfVElNSU5HXzBfODAwLAorCS50aW1pbmdfY2ZnXzEgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMV84MDAsCisJLnRpbWluZ19jZmdfMiA9IENPTkZJR19TWVNfRERSX1RJTUlOR18yXzgwMCwKKwkuZGRyX3NkcmFtX2NmZyA9IENPTkZJR19TWVNfRERSX1NEUkFNX0NGRywKKwkuZGRyX3NkcmFtX2NmZ18yID0gQ09ORklHX1NZU19ERFJfU0RSQU1fQ0ZHMiwKKwkuZGRyX3NkcmFtX21vZGUgPSBDT05GSUdfU1lTX0REUl9NT0RFXzFfODAwLAorCS5kZHJfc2RyYW1fbW9kZV8yID0gQ09ORklHX1NZU19ERFJfTU9ERV8yXzgwMCwKKwkuZGRyX3NkcmFtX21kX2NudGwgPSBDT05GSUdfU1lTX0REUl9NT0RFX0NPTlRST0wsCisJLmRkcl9zZHJhbV9pbnRlcnZhbCA9IENPTkZJR19TWVNfRERSX0lOVEVSVkFMXzgwMCwKKwkuZGRyX2RhdGFfaW5pdCA9IENPTkZJR19NRU1fSU5JVF9WQUxVRSwKKwkuZGRyX3NkcmFtX2Nsa19jbnRsID0gQ09ORklHX1NZU19ERFJfQ0xLX0NUUkxfODAwLAorCS5kZHJfaW5pdF9hZGRyID0gQ09ORklHX1NZU19ERFJfSU5JVF9BRERSLAorCS5kZHJfaW5pdF9leHRfYWRkciA9IENPTkZJR19TWVNfRERSX0lOSVRfRVhUX0FERFIsCisJLnRpbWluZ19jZmdfNCA9IENPTkZJR19TWVNfRERSX1RJTUlOR180LAorCS50aW1pbmdfY2ZnXzUgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfNSwKKwkuZGRyX3pxX2NudGwgPSBDT05GSUdfU1lTX0REUl9aUV9DTlRMLAorCS5kZHJfd3JsdmxfY250bCA9IENPTkZJR19TWVNfRERSX1dSTFZMX0NOVEwsCisJLmRkcl9zZHJhbV9yY3dfMSA9IENPTkZJR19TWVNfRERSX1JDV18xLAorCS5kZHJfc2RyYW1fcmN3XzIgPSBDT05GSUdfU1lTX0REUl9SQ1dfMgorfTsKKworZnNsX2Rkcl9jZmdfcmVnc190IGRkcl9jZmdfcmVnc184MDBfMm5kID0geworCS5jc1swXS5ibmRzID0gQ09ORklHX1NZU19ERFIyX0NTMF9CTkRTLAorCS5jc1sxXS5ibmRzID0gQ09ORklHX1NZU19ERFIyX0NTMV9CTkRTLAorCS5jc1syXS5ibmRzID0gQ09ORklHX1NZU19ERFIyX0NTMl9CTkRTLAorCS5jc1szXS5ibmRzID0gQ09ORklHX1NZU19ERFIyX0NTM19CTkRTLAorCS5jc1swXS5jb25maWcgPSBDT05GSUdfU1lTX0REUjJfQ1MwX0NPTkZJRywKKwkuY3NbMF0uY29uZmlnXzIgPSBDT05GSUdfU1lTX0REUl9DUzBfQ09ORklHXzIsCisJLmNzWzFdLmNvbmZpZyA9IENPTkZJR19TWVNfRERSMl9DUzFfQ09ORklHLAorCS5jc1syXS5jb25maWcgPSBDT05GSUdfU1lTX0REUjJfQ1MyX0NPTkZJRywKKwkuY3NbM10uY29uZmlnID0gQ09ORklHX1NZU19ERFIyX0NTM19DT05GSUcsCisJLnRpbWluZ19jZmdfMyA9IENPTkZJR19TWVNfRERSX1RJTUlOR18zXzgwMCwKKwkudGltaW5nX2NmZ18wID0gQ09ORklHX1NZU19ERFJfVElNSU5HXzBfODAwLAorCS50aW1pbmdfY2ZnXzEgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMV84MDAsCisJLnRpbWluZ19jZmdfMiA9IENPTkZJR19TWVNfRERSX1RJTUlOR18yXzgwMCwKKwkuZGRyX3NkcmFtX2NmZyA9IENPTkZJR19TWVNfRERSX1NEUkFNX0NGRywKKwkuZGRyX3NkcmFtX2NmZ18yID0gQ09ORklHX1NZU19ERFJfU0RSQU1fQ0ZHMiwKKwkuZGRyX3NkcmFtX21vZGUgPSBDT05GSUdfU1lTX0REUl9NT0RFXzFfODAwLAorCS5kZHJfc2RyYW1fbW9kZV8yID0gQ09ORklHX1NZU19ERFJfTU9ERV8yXzgwMCwKKwkuZGRyX3NkcmFtX21kX2NudGwgPSBDT05GSUdfU1lTX0REUl9NT0RFX0NPTlRST0wsCisJLmRkcl9zZHJhbV9pbnRlcnZhbCA9IENPTkZJR19TWVNfRERSX0lOVEVSVkFMXzgwMCwKKwkuZGRyX2RhdGFfaW5pdCA9IENPTkZJR19NRU1fSU5JVF9WQUxVRSwKKwkuZGRyX3NkcmFtX2Nsa19jbnRsID0gQ09ORklHX1NZU19ERFJfQ0xLX0NUUkxfODAwLAorCS5kZHJfaW5pdF9hZGRyID0gQ09ORklHX1NZU19ERFJfSU5JVF9BRERSLAorCS5kZHJfaW5pdF9leHRfYWRkciA9IENPTkZJR19TWVNfRERSX0lOSVRfRVhUX0FERFIsCisJLnRpbWluZ19jZmdfNCA9IENPTkZJR19TWVNfRERSX1RJTUlOR180LAorCS50aW1pbmdfY2ZnXzUgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfNSwKKwkuZGRyX3pxX2NudGwgPSBDT05GSUdfU1lTX0REUl9aUV9DTlRMLAorCS5kZHJfd3JsdmxfY250bCA9IENPTkZJR19TWVNfRERSX1dSTFZMX0NOVEwsCisJLmRkcl9zZHJhbV9yY3dfMSA9IENPTkZJR19TWVNfRERSX1JDV18xLAorCS5kZHJfc2RyYW1fcmN3XzIgPSBDT05GSUdfU1lTX0REUl9SQ1dfMgorfTsKKworZnNsX2Rkcl9jZmdfcmVnc190IGRkcl9jZmdfcmVnc185MDAgPSB7CisJLmNzWzBdLmJuZHMgPSBDT05GSUdfU1lTX0REUl9DUzBfQk5EUywKKwkuY3NbMV0uYm5kcyA9IENPTkZJR19TWVNfRERSX0NTMV9CTkRTLAorCS5jc1syXS5ibmRzID0gQ09ORklHX1NZU19ERFJfQ1MyX0JORFMsCisJLmNzWzNdLmJuZHMgPSBDT05GSUdfU1lTX0REUl9DUzNfQk5EUywKKwkuY3NbMF0uY29uZmlnID0gQ09ORklHX1NZU19ERFJfQ1MwX0NPTkZJRywKKwkuY3NbMF0uY29uZmlnXzIgPSBDT05GSUdfU1lTX0REUl9DUzBfQ09ORklHXzIsCisJLmNzWzFdLmNvbmZpZyA9IENPTkZJR19TWVNfRERSX0NTMV9DT05GSUcsCisJLmNzWzJdLmNvbmZpZyA9IENPTkZJR19TWVNfRERSX0NTMl9DT05GSUcsCisJLmNzWzNdLmNvbmZpZyA9IENPTkZJR19TWVNfRERSX0NTM19DT05GSUcsCisJLnRpbWluZ19jZmdfMyA9IENPTkZJR19TWVNfRERSX1RJTUlOR18zXzkwMCwKKwkudGltaW5nX2NmZ18wID0gQ09ORklHX1NZU19ERFJfVElNSU5HXzBfOTAwLAorCS50aW1pbmdfY2ZnXzEgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMV85MDAsCisJLnRpbWluZ19jZmdfMiA9IENPTkZJR19TWVNfRERSX1RJTUlOR18yXzkwMCwKKwkuZGRyX3NkcmFtX2NmZyA9IENPTkZJR19TWVNfRERSX1NEUkFNX0NGRywKKwkuZGRyX3NkcmFtX2NmZ18yID0gQ09ORklHX1NZU19ERFJfU0RSQU1fQ0ZHMiwKKwkuZGRyX3NkcmFtX21vZGUgPSBDT05GSUdfU1lTX0REUl9NT0RFXzFfOTAwLAorCS5kZHJfc2RyYW1fbW9kZV8yID0gQ09ORklHX1NZU19ERFJfTU9ERV8yXzkwMCwKKwkuZGRyX3NkcmFtX21kX2NudGwgPSBDT05GSUdfU1lTX0REUl9NT0RFX0NPTlRST0wsCisJLmRkcl9zZHJhbV9pbnRlcnZhbCA9IENPTkZJR19TWVNfRERSX0lOVEVSVkFMXzkwMCwKKwkuZGRyX2RhdGFfaW5pdCA9IENPTkZJR19NRU1fSU5JVF9WQUxVRSwKKwkuZGRyX3NkcmFtX2Nsa19jbnRsID0gQ09ORklHX1NZU19ERFJfQ0xLX0NUUkxfOTAwLAorCS5kZHJfaW5pdF9hZGRyID0gQ09ORklHX1NZU19ERFJfSU5JVF9BRERSLAorCS5kZHJfaW5pdF9leHRfYWRkciA9IENPTkZJR19TWVNfRERSX0lOSVRfRVhUX0FERFIsCisJLnRpbWluZ19jZmdfNCA9IENPTkZJR19TWVNfRERSX1RJTUlOR180LAorCS50aW1pbmdfY2ZnXzUgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfNSwKKwkuZGRyX3pxX2NudGwgPSBDT05GSUdfU1lTX0REUl9aUV9DTlRMLAorCS5kZHJfd3JsdmxfY250bCA9IENPTkZJR19TWVNfRERSX1dSTFZMX0NOVEwsCisJLmRkcl9zZHJhbV9yY3dfMSA9IENPTkZJR19TWVNfRERSX1JDV18xLAorCS5kZHJfc2RyYW1fcmN3XzIgPSBDT05GSUdfU1lTX0REUl9SQ1dfMgorfTsKKworZnNsX2Rkcl9jZmdfcmVnc190IGRkcl9jZmdfcmVnc185MDBfMm5kID0geworCS5jc1swXS5ibmRzID0gQ09ORklHX1NZU19ERFIyX0NTMF9CTkRTLAorCS5jc1sxXS5ibmRzID0gQ09ORklHX1NZU19ERFIyX0NTMV9CTkRTLAorCS5jc1syXS5ibmRzID0gQ09ORklHX1NZU19ERFIyX0NTMl9CTkRTLAorCS5jc1szXS5ibmRzID0gQ09ORklHX1NZU19ERFIyX0NTM19CTkRTLAorCS5jc1swXS5jb25maWcgPSBDT05GSUdfU1lTX0REUjJfQ1MwX0NPTkZJRywKKwkuY3NbMF0uY29uZmlnXzIgPSBDT05GSUdfU1lTX0REUl9DUzBfQ09ORklHXzIsCisJLmNzWzFdLmNvbmZpZyA9IENPTkZJR19TWVNfRERSMl9DUzFfQ09ORklHLAorCS5jc1syXS5jb25maWcgPSBDT05GSUdfU1lTX0REUjJfQ1MyX0NPTkZJRywKKwkuY3NbM10uY29uZmlnID0gQ09ORklHX1NZU19ERFIyX0NTM19DT05GSUcsCisJLnRpbWluZ19jZmdfMyA9IENPTkZJR19TWVNfRERSX1RJTUlOR18zXzkwMCwKKwkudGltaW5nX2NmZ18wID0gQ09ORklHX1NZU19ERFJfVElNSU5HXzBfOTAwLAorCS50aW1pbmdfY2ZnXzEgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMV85MDAsCisJLnRpbWluZ19jZmdfMiA9IENPTkZJR19TWVNfRERSX1RJTUlOR18yXzkwMCwKKwkuZGRyX3NkcmFtX2NmZyA9IENPTkZJR19TWVNfRERSX1NEUkFNX0NGRywKKwkuZGRyX3NkcmFtX2NmZ18yID0gQ09ORklHX1NZU19ERFJfU0RSQU1fQ0ZHMiwKKwkuZGRyX3NkcmFtX21vZGUgPSBDT05GSUdfU1lTX0REUl9NT0RFXzFfOTAwLAorCS5kZHJfc2RyYW1fbW9kZV8yID0gQ09ORklHX1NZU19ERFJfTU9ERV8yXzkwMCwKKwkuZGRyX3NkcmFtX21kX2NudGwgPSBDT05GSUdfU1lTX0REUl9NT0RFX0NPTlRST0wsCisJLmRkcl9zZHJhbV9pbnRlcnZhbCA9IENPTkZJR19TWVNfRERSX0lOVEVSVkFMXzkwMCwKKwkuZGRyX2RhdGFfaW5pdCA9IENPTkZJR19NRU1fSU5JVF9WQUxVRSwKKwkuZGRyX3NkcmFtX2Nsa19jbnRsID0gQ09ORklHX1NZU19ERFJfQ0xLX0NUUkxfOTAwLAorCS5kZHJfaW5pdF9hZGRyID0gQ09ORklHX1NZU19ERFJfSU5JVF9BRERSLAorCS5kZHJfaW5pdF9leHRfYWRkciA9IENPTkZJR19TWVNfRERSX0lOSVRfRVhUX0FERFIsCisJLnRpbWluZ19jZmdfNCA9IENPTkZJR19TWVNfRERSX1RJTUlOR180LAorCS50aW1pbmdfY2ZnXzUgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfNSwKKwkuZGRyX3pxX2NudGwgPSBDT05GSUdfU1lTX0REUl9aUV9DTlRMLAorCS5kZHJfd3JsdmxfY250bCA9IENPTkZJR19TWVNfRERSX1dSTFZMX0NOVEwsCisJLmRkcl9zZHJhbV9yY3dfMSA9IENPTkZJR19TWVNfRERSX1JDV18xLAorCS5kZHJfc2RyYW1fcmN3XzIgPSBDT05GSUdfU1lTX0REUl9SQ1dfMgorfTsKKworZnNsX2Rkcl9jZmdfcmVnc190IGRkcl9jZmdfcmVnc18xMDAwID0geworCS5jc1swXS5ibmRzID0gQ09ORklHX1NZU19ERFJfQ1MwX0JORFMsCisJLmNzWzFdLmJuZHMgPSBDT05GSUdfU1lTX0REUl9DUzFfQk5EUywKKwkuY3NbMl0uYm5kcyA9IENPTkZJR19TWVNfRERSX0NTMl9CTkRTLAorCS5jc1szXS5ibmRzID0gQ09ORklHX1NZU19ERFJfQ1MzX0JORFMsCisJLmNzWzBdLmNvbmZpZyA9IENPTkZJR19TWVNfRERSX0NTMF9DT05GSUcsCisJLmNzWzBdLmNvbmZpZ18yID0gQ09ORklHX1NZU19ERFJfQ1MwX0NPTkZJR18yLAorCS5jc1sxXS5jb25maWcgPSBDT05GSUdfU1lTX0REUl9DUzFfQ09ORklHLAorCS5jc1syXS5jb25maWcgPSBDT05GSUdfU1lTX0REUl9DUzJfQ09ORklHLAorCS5jc1szXS5jb25maWcgPSBDT05GSUdfU1lTX0REUl9DUzNfQ09ORklHLAorCS50aW1pbmdfY2ZnXzMgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfM18xMDAwLAorCS50aW1pbmdfY2ZnXzAgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMF8xMDAwLAorCS50aW1pbmdfY2ZnXzEgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMV8xMDAwLAorCS50aW1pbmdfY2ZnXzIgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMl8xMDAwLAorCS5kZHJfc2RyYW1fY2ZnID0gQ09ORklHX1NZU19ERFJfU0RSQU1fQ0ZHLAorCS5kZHJfc2RyYW1fY2ZnXzIgPSBDT05GSUdfU1lTX0REUl9TRFJBTV9DRkcyLAorCS5kZHJfc2RyYW1fbW9kZSA9IENPTkZJR19TWVNfRERSX01PREVfMV8xMDAwLAorCS5kZHJfc2RyYW1fbW9kZV8yID0gQ09ORklHX1NZU19ERFJfTU9ERV8yXzEwMDAsCisJLmRkcl9zZHJhbV9tZF9jbnRsID0gQ09ORklHX1NZU19ERFJfTU9ERV9DT05UUk9MLAorCS5kZHJfc2RyYW1faW50ZXJ2YWwgPSBDT05GSUdfU1lTX0REUl9JTlRFUlZBTF8xMDAwLAorCS5kZHJfZGF0YV9pbml0ID0gQ09ORklHX01FTV9JTklUX1ZBTFVFLAorCS5kZHJfc2RyYW1fY2xrX2NudGwgPSBDT05GSUdfU1lTX0REUl9DTEtfQ1RSTF8xMDAwLAorCS5kZHJfaW5pdF9hZGRyID0gQ09ORklHX1NZU19ERFJfSU5JVF9BRERSLAorCS5kZHJfaW5pdF9leHRfYWRkciA9IENPTkZJR19TWVNfRERSX0lOSVRfRVhUX0FERFIsCisJLnRpbWluZ19jZmdfNCA9IENPTkZJR19TWVNfRERSX1RJTUlOR180LAorCS50aW1pbmdfY2ZnXzUgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfNSwKKwkuZGRyX3pxX2NudGwgPSBDT05GSUdfU1lTX0REUl9aUV9DTlRMLAorCS5kZHJfd3JsdmxfY250bCA9IENPTkZJR19TWVNfRERSX1dSTFZMX0NOVEwsCisJLmRkcl9zZHJhbV9yY3dfMSA9IENPTkZJR19TWVNfRERSX1JDV18xLAorCS5kZHJfc2RyYW1fcmN3XzIgPSBDT05GSUdfU1lTX0REUl9SQ1dfMgorfTsKKworZnNsX2Rkcl9jZmdfcmVnc190IGRkcl9jZmdfcmVnc18xMDAwXzJuZCA9IHsKKwkuY3NbMF0uYm5kcyA9IENPTkZJR19TWVNfRERSMl9DUzBfQk5EUywKKwkuY3NbMV0uYm5kcyA9IENPTkZJR19TWVNfRERSMl9DUzFfQk5EUywKKwkuY3NbMl0uYm5kcyA9IENPTkZJR19TWVNfRERSMl9DUzJfQk5EUywKKwkuY3NbM10uYm5kcyA9IENPTkZJR19TWVNfRERSMl9DUzNfQk5EUywKKwkuY3NbMF0uY29uZmlnID0gQ09ORklHX1NZU19ERFIyX0NTMF9DT05GSUcsCisJLmNzWzBdLmNvbmZpZ18yID0gQ09ORklHX1NZU19ERFJfQ1MwX0NPTkZJR18yLAorCS5jc1sxXS5jb25maWcgPSBDT05GSUdfU1lTX0REUjJfQ1MxX0NPTkZJRywKKwkuY3NbMl0uY29uZmlnID0gQ09ORklHX1NZU19ERFIyX0NTMl9DT05GSUcsCisJLmNzWzNdLmNvbmZpZyA9IENPTkZJR19TWVNfRERSMl9DUzNfQ09ORklHLAorCS50aW1pbmdfY2ZnXzMgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfM18xMDAwLAorCS50aW1pbmdfY2ZnXzAgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMF8xMDAwLAorCS50aW1pbmdfY2ZnXzEgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMV8xMDAwLAorCS50aW1pbmdfY2ZnXzIgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMl8xMDAwLAorCS5kZHJfc2RyYW1fY2ZnID0gQ09ORklHX1NZU19ERFJfU0RSQU1fQ0ZHLAorCS5kZHJfc2RyYW1fY2ZnXzIgPSBDT05GSUdfU1lTX0REUl9TRFJBTV9DRkcyLAorCS5kZHJfc2RyYW1fbW9kZSA9IENPTkZJR19TWVNfRERSX01PREVfMV8xMDAwLAorCS5kZHJfc2RyYW1fbW9kZV8yID0gQ09ORklHX1NZU19ERFJfTU9ERV8yXzEwMDAsCisJLmRkcl9zZHJhbV9tZF9jbnRsID0gQ09ORklHX1NZU19ERFJfTU9ERV9DT05UUk9MLAorCS5kZHJfc2RyYW1faW50ZXJ2YWwgPSBDT05GSUdfU1lTX0REUl9JTlRFUlZBTF8xMDAwLAorCS5kZHJfZGF0YV9pbml0ID0gQ09ORklHX01FTV9JTklUX1ZBTFVFLAorCS5kZHJfc2RyYW1fY2xrX2NudGwgPSBDT05GSUdfU1lTX0REUl9DTEtfQ1RSTF8xMDAwLAorCS5kZHJfaW5pdF9hZGRyID0gQ09ORklHX1NZU19ERFJfSU5JVF9BRERSLAorCS5kZHJfaW5pdF9leHRfYWRkciA9IENPTkZJR19TWVNfRERSX0lOSVRfRVhUX0FERFIsCisJLnRpbWluZ19jZmdfNCA9IENPTkZJR19TWVNfRERSX1RJTUlOR180LAorCS50aW1pbmdfY2ZnXzUgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfNSwKKwkuZGRyX3pxX2NudGwgPSBDT05GSUdfU1lTX0REUl9aUV9DTlRMLAorCS5kZHJfd3JsdmxfY250bCA9IENPTkZJR19TWVNfRERSX1dSTFZMX0NOVEwsCisJLmRkcl9zZHJhbV9yY3dfMSA9IENPTkZJR19TWVNfRERSX1JDV18xLAorCS5kZHJfc2RyYW1fcmN3XzIgPSBDT05GSUdfU1lTX0REUl9SQ1dfMgorfTsKKworZnNsX2Rkcl9jZmdfcmVnc190IGRkcl9jZmdfcmVnc18xMjAwID0geworCS5jc1swXS5ibmRzID0gQ09ORklHX1NZU19ERFJfQ1MwX0JORFMsCisJLmNzWzFdLmJuZHMgPSBDT05GSUdfU1lTX0REUl9DUzFfQk5EUywKKwkuY3NbMl0uYm5kcyA9IENPTkZJR19TWVNfRERSX0NTMl9CTkRTLAorCS5jc1szXS5ibmRzID0gQ09ORklHX1NZU19ERFJfQ1MzX0JORFMsCisJLmNzWzBdLmNvbmZpZyA9IENPTkZJR19TWVNfRERSX0NTMF9DT05GSUcsCisJLmNzWzBdLmNvbmZpZ18yID0gQ09ORklHX1NZU19ERFJfQ1MwX0NPTkZJR18yLAorCS5jc1sxXS5jb25maWcgPSBDT05GSUdfU1lTX0REUl9DUzFfQ09ORklHLAorCS5jc1syXS5jb25maWcgPSBDT05GSUdfU1lTX0REUl9DUzJfQ09ORklHLAorCS5jc1szXS5jb25maWcgPSBDT05GSUdfU1lTX0REUl9DUzNfQ09ORklHLAorCS50aW1pbmdfY2ZnXzMgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfM18xMjAwLAorCS50aW1pbmdfY2ZnXzAgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMF8xMjAwLAorCS50aW1pbmdfY2ZnXzEgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMV8xMjAwLAorCS50aW1pbmdfY2ZnXzIgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMl8xMjAwLAorCS5kZHJfc2RyYW1fY2ZnID0gQ09ORklHX1NZU19ERFJfU0RSQU1fQ0ZHLAorCS5kZHJfc2RyYW1fY2ZnXzIgPSBDT05GSUdfU1lTX0REUl9TRFJBTV9DRkcyLAorCS5kZHJfc2RyYW1fbW9kZSA9IENPTkZJR19TWVNfRERSX01PREVfMV8xMjAwLAorCS5kZHJfc2RyYW1fbW9kZV8yID0gQ09ORklHX1NZU19ERFJfTU9ERV8yXzEyMDAsCisJLmRkcl9zZHJhbV9tZF9jbnRsID0gQ09ORklHX1NZU19ERFJfTU9ERV9DT05UUk9MLAorCS5kZHJfc2RyYW1faW50ZXJ2YWwgPSBDT05GSUdfU1lTX0REUl9JTlRFUlZBTF8xMjAwLAorCS5kZHJfZGF0YV9pbml0ID0gQ09ORklHX01FTV9JTklUX1ZBTFVFLAorCS5kZHJfc2RyYW1fY2xrX2NudGwgPSBDT05GSUdfU1lTX0REUl9DTEtfQ1RSTF8xMjAwLAorCS5kZHJfaW5pdF9hZGRyID0gQ09ORklHX1NZU19ERFJfSU5JVF9BRERSLAorCS5kZHJfaW5pdF9leHRfYWRkciA9IENPTkZJR19TWVNfRERSX0lOSVRfRVhUX0FERFIsCisJLnRpbWluZ19jZmdfNCA9IENPTkZJR19TWVNfRERSX1RJTUlOR180LAorCS50aW1pbmdfY2ZnXzUgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfNSwKKwkuZGRyX3pxX2NudGwgPSBDT05GSUdfU1lTX0REUl9aUV9DTlRMLAorCS5kZHJfd3JsdmxfY250bCA9IENPTkZJR19TWVNfRERSX1dSTFZMX0NOVEwsCisJLmRkcl9zZHJhbV9yY3dfMSA9IENPTkZJR19TWVNfRERSX1JDV18xLAorCS5kZHJfc2RyYW1fcmN3XzIgPSBDT05GSUdfU1lTX0REUl9SQ1dfMgorfTsKKworZnNsX2Rkcl9jZmdfcmVnc190IGRkcl9jZmdfcmVnc18xMjAwXzJuZCA9IHsKKwkuY3NbMF0uYm5kcyA9IENPTkZJR19TWVNfRERSMl9DUzBfQk5EUywKKwkuY3NbMV0uYm5kcyA9IENPTkZJR19TWVNfRERSMl9DUzFfQk5EUywKKwkuY3NbMl0uYm5kcyA9IENPTkZJR19TWVNfRERSMl9DUzJfQk5EUywKKwkuY3NbM10uYm5kcyA9IENPTkZJR19TWVNfRERSMl9DUzNfQk5EUywKKwkuY3NbMF0uY29uZmlnID0gQ09ORklHX1NZU19ERFIyX0NTMF9DT05GSUcsCisJLmNzWzBdLmNvbmZpZ18yID0gQ09ORklHX1NZU19ERFJfQ1MwX0NPTkZJR18yLAorCS5jc1sxXS5jb25maWcgPSBDT05GSUdfU1lTX0REUjJfQ1MxX0NPTkZJRywKKwkuY3NbMl0uY29uZmlnID0gQ09ORklHX1NZU19ERFIyX0NTMl9DT05GSUcsCisJLmNzWzNdLmNvbmZpZyA9IENPTkZJR19TWVNfRERSMl9DUzNfQ09ORklHLAorCS50aW1pbmdfY2ZnXzMgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfM18xMjAwLAorCS50aW1pbmdfY2ZnXzAgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMF8xMjAwLAorCS50aW1pbmdfY2ZnXzEgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMV8xMjAwLAorCS50aW1pbmdfY2ZnXzIgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfMl8xMjAwLAorCS5kZHJfc2RyYW1fY2ZnID0gQ09ORklHX1NZU19ERFJfU0RSQU1fQ0ZHLAorCS5kZHJfc2RyYW1fY2ZnXzIgPSBDT05GSUdfU1lTX0REUl9TRFJBTV9DRkcyLAorCS5kZHJfc2RyYW1fbW9kZSA9IENPTkZJR19TWVNfRERSX01PREVfMV8xMjAwLAorCS5kZHJfc2RyYW1fbW9kZV8yID0gQ09ORklHX1NZU19ERFJfTU9ERV8yXzEyMDAsCisJLmRkcl9zZHJhbV9tZF9jbnRsID0gQ09ORklHX1NZU19ERFJfTU9ERV9DT05UUk9MLAorCS5kZHJfc2RyYW1faW50ZXJ2YWwgPSBDT05GSUdfU1lTX0REUl9JTlRFUlZBTF8xMjAwLAorCS5kZHJfZGF0YV9pbml0ID0gQ09ORklHX01FTV9JTklUX1ZBTFVFLAorCS5kZHJfc2RyYW1fY2xrX2NudGwgPSBDT05GSUdfU1lTX0REUl9DTEtfQ1RSTF8xMjAwLAorCS5kZHJfaW5pdF9hZGRyID0gQ09ORklHX1NZU19ERFJfSU5JVF9BRERSLAorCS5kZHJfaW5pdF9leHRfYWRkciA9IENPTkZJR19TWVNfRERSX0lOSVRfRVhUX0FERFIsCisJLnRpbWluZ19jZmdfNCA9IENPTkZJR19TWVNfRERSX1RJTUlOR180LAorCS50aW1pbmdfY2ZnXzUgPSBDT05GSUdfU1lTX0REUl9USU1JTkdfNSwKKwkuZGRyX3pxX2NudGwgPSBDT05GSUdfU1lTX0REUl9aUV9DTlRMLAorCS5kZHJfd3JsdmxfY250bCA9IENPTkZJR19TWVNfRERSX1dSTFZMX0NOVEwsCisJLmRkcl9zZHJhbV9yY3dfMSA9IENPTkZJR19TWVNfRERSX1JDV18xLAorCS5kZHJfc2RyYW1fcmN3XzIgPSBDT05GSUdfU1lTX0REUl9SQ1dfMgorfTsKKworZml4ZWRfZGRyX3Bhcm1fdCBmaXhlZF9kZHJfcGFybV8wW10gPSB7CisJe0RBVEFSQVRFXzgwME1IWiwgREFUQVJBVEVfOTAwTUhaLCAmZGRyX2NmZ19yZWdzXzgwMH0sCisJe0RBVEFSQVRFXzkwME1IWiwgREFUQVJBVEVfMTAwME1IWiwgJmRkcl9jZmdfcmVnc185MDB9LAorCXtEQVRBUkFURV8xMDAwTUhaLCBEQVRBUkFURV8xMjAwTUhaLCAmZGRyX2NmZ19yZWdzXzEwMDB9LAorCXtEQVRBUkFURV8xMjAwTUhaLCBEQVRBUkFURV8xMzAwTUhaLCAmZGRyX2NmZ19yZWdzXzEyMDB9LAorCXswLCAwLCBOVUxMfQorfTsKKworZml4ZWRfZGRyX3Bhcm1fdCBmaXhlZF9kZHJfcGFybV8xW10gPSB7CisJe0RBVEFSQVRFXzgwME1IWiwgREFUQVJBVEVfOTAwTUhaLCAmZGRyX2NmZ19yZWdzXzgwMF8ybmR9LAorCXtEQVRBUkFURV85MDBNSFosIERBVEFSQVRFXzEwMDBNSFosICZkZHJfY2ZnX3JlZ3NfOTAwXzJuZH0sCisJe0RBVEFSQVRFXzEwMDBNSFosIERBVEFSQVRFXzEyMDBNSFosICZkZHJfY2ZnX3JlZ3NfMTAwMF8ybmR9LAorCXtEQVRBUkFURV8xMjAwTUhaLCBEQVRBUkFURV8xMzAwTUhaLCAmZGRyX2NmZ19yZWdzXzEyMDBfMm5kfSwKKwl7MCwgMCwgTlVMTH0KK307CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODM2MGVtZHMvbXBjODM2MGVtZHMuYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MzYwZW1kcy9tcGM4MzYwZW1kcy5jCmluZGV4IDU5YWRhOWMuLjBiYWJkMjYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MzYwZW1kcy9tcGM4MzYwZW1kcy5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MzYwZW1kcy9tcGM4MzYwZW1kcy5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2LDIwMTAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KICAqIERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlIDxzcGRfc2RyYW0uaD4KICNpbmNsdWRlIDxhc20vbW11Lmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2ZzbF9lbmV0Lmg+CiAjaWYgZGVmaW5lZChDT05GSUdfT0ZfTElCRkRUKQogI2luY2x1ZGUgPGxpYmZkdC5oPgogI2VuZGlmCkBAIC0zOTYsMTAgKzM5Nyw4IEBACiAJCQkJcHJvcCA9IGZkdF9nZXRwcm9wKGJsb2IsIHBhdGgsCiAJCQkJICAgICAgICAgICAgICAgICAgICJwaHktY29ubmVjdGlvbi10eXBlIiwgMCk7CiAJCQkJaWYgKHByb3AgJiYgKHN0cmNtcChwcm9wLCAicmdtaWktaWQiKSA9PSAwKSkKLQkJCQkJZmR0X3NldHByb3AoYmxvYiwgcGF0aCwKLQkJCQkJICAgICAgICAgICAgInBoeS1jb25uZWN0aW9uLXR5cGUiLAotCQkJCQkgICAgICAgICAgICAicmdtaWktcnhpZCIsCi0JCQkJCSAgICAgICAgICAgIHNpemVvZigicmdtaWktcnhpZCIpKTsKKwkJCQkJZmR0X2ZpeHVwX3BoeV9jb25uZWN0aW9uKGJsb2IsIHBhdGgsCisJCQkJCQkJCVJHTUlJX1JYSUQpOwogCQkJfQogI2VuZGlmCiAjaWYgZGVmaW5lZChDT05GSUdfSEFTX0VUSDEpCkBAIC00MTAsMTAgKzQwOSw4IEBACiAJCQkJcHJvcCA9IGZkdF9nZXRwcm9wKGJsb2IsIHBhdGgsCiAJCQkJICAgICAgICAgICAgICAgICAgICJwaHktY29ubmVjdGlvbi10eXBlIiwgMCk7CiAJCQkJaWYgKHByb3AgJiYgKHN0cmNtcChwcm9wLCAicmdtaWktaWQiKSA9PSAwKSkKLQkJCQkJZmR0X3NldHByb3AoYmxvYiwgcGF0aCwKLQkJCQkJICAgICAgICAgICAgInBoeS1jb25uZWN0aW9uLXR5cGUiLAotCQkJCQkgICAgICAgICAgICAicmdtaWktcnhpZCIsCi0JCQkJCSAgICAgICAgICAgIHNpemVvZigicmdtaWktcnhpZCIpKTsKKwkJCQkJZmR0X2ZpeHVwX3BoeV9jb25uZWN0aW9uKGJsb2IsIHBhdGgsCisJCQkJCQkJCVJHTUlJX1JYSUQpOwogCQkJfQogI2VuZGlmCiAJCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4Mzd4ZW1kcy9tcGM4Mzd4ZW1kcy5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzN3hlbWRzL21wYzgzN3hlbWRzLmMKaW5kZXggMzJhODdhZC4uNTFkZDY5MiAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzgzN3hlbWRzL21wYzgzN3hlbWRzLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzN3hlbWRzL21wYzgzN3hlbWRzLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsMjAxMCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgogICogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAqCiAgKiBDUkVESVRTOiBLaW0gUGhpbGxpcHMgY29udHJpYnV0ZSB0byBMSUJGRFQgY29kZQpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPGkyYy5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9mc2xfbXBjODN4eF9zZXJkZXMuaD4KKyNpbmNsdWRlIDxhc20vZnNsX2VuZXQuaD4KICNpbmNsdWRlIDxzcGRfc2RyYW0uaD4KICNpbmNsdWRlIDx0c2VjLmg+CiAjaW5jbHVkZSA8bGliZmR0Lmg+CkBAIC0xMzYsNyArMTM3LDYgQEAKIHN0YXRpYyB2b2lkIF9fZnRfdHNlY19maXh1cCh2b2lkICpibG9iLCBiZF90ICpiZCwgY29uc3QgY2hhciAqYWxpYXMsCiAJCQkgICAgaW50IHBoeV9hZGRyKQogewotCWNvbnN0IGNoYXIgKnBoeV90eXBlID0gInNnbWlpIjsKIAljb25zdCB1MzIgKnBoOwogCWludCBvZmY7CiAJaW50IGVycjsKQEAgLTE0OCw4ICsxNDgsOCBAQAogCQlyZXR1cm47CiAJfQogCi0JZXJyID0gZmR0X3NldHByb3AoYmxvYiwgb2ZmLCAicGh5LWNvbm5lY3Rpb24tdHlwZSIsIHBoeV90eXBlLAotCQkJICBzdHJsZW4ocGh5X3R5cGUpICsgMSk7CisJZXJyID0gZmR0X2ZpeHVwX3BoeV9jb25uZWN0aW9uKGJsb2IsIG9mZiwgU0dNSUkpOworCiAJaWYgKGVycikgewogCQlwcmludGYoIldBUk5JTkc6IGNvdWxkIG5vdCBzZXQgcGh5LWNvbm5lY3Rpb24tdHlwZSBmb3IgJXM6ICIKIAkJCSIlcy5cbiIsIGFsaWFzLCBmZHRfc3RyZXJyb3IoZXJyKSk7CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU2OW1kcy9tcGM4NTY5bWRzLmMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU2OW1kcy9tcGM4NTY5bWRzLmMKaW5kZXggNzk1ZTU2NS4uNzQzZTcxMiAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjltZHMvbXBjODU2OW1kcy5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTY5bWRzL21wYzg1NjltZHMuYwpAQCAtNjIyLDggKzYyMiw4IEBACiAJCQlicmVhazsKIAkJfQogCi0JCWVyciA9IGZkdF9zZXRwcm9wX3N0cmluZyhibG9iLCBub2Rlb2ZmLCAicGh5LWNvbm5lY3Rpb24tdHlwZSIsCi0JCQkJCSJybWlpIik7CisJCWVyciA9IGZkdF9maXh1cF9waHlfY29ubmVjdGlvbihibG9iLCBub2Rlb2ZmLCBSTUlJKTsKKwogCQlpZiAoZXJyIDwgMCkgewogCQkJcHJpbnRmKCJXQVJOSU5HOiBjb3VsZCBub3Qgc2V0IHBoeS1jb25uZWN0aW9uLXR5cGUgIgogCQkJCSIlcy5cbiIsIGZkdF9zdHJlcnJvcihlcnIpKTsKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NjEwaHBjZC91LWJvb3QubGRzIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg2MTBocGNkL3UtYm9vdC5sZHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljOThiMmEuLjAwMDAwMDAKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg2MTBocGNkL3UtYm9vdC5sZHMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDA3IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotT1VUUFVUX0FSQ0gocG93ZXJwYykKLQotU0VDVElPTlMKLXsKLQotICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KLSAgLmludGVycCA6IHsgKiguaW50ZXJwKSB9Ci0gIC5oYXNoCQkgOiB7ICooLmhhc2gpCQl9Ci0gIC5keW5zeW0JIDogeyAqKC5keW5zeW0pCQl9Ci0gIC5keW5zdHIJIDogeyAqKC5keW5zdHIpCQl9Ci0gIC5yZWwudGV4dAkgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQJIDogeyAqKC5yZWxhLnRleHQpCX0KLSAgLnJlbC5kYXRhCSA6IHsgKigucmVsLmRhdGEpCX0KLSAgLnJlbGEuZGF0YQkgOiB7ICooLnJlbGEuZGF0YSkJfQotICAucmVsLnJvZGF0YQkgOiB7ICooLnJlbC5yb2RhdGEpCX0KLSAgLnJlbGEucm9kYXRhCSA6IHsgKigucmVsYS5yb2RhdGEpCX0KLSAgLnJlbC5nb3QJIDogeyAqKC5yZWwuZ290KQl9Ci0gIC5yZWxhLmdvdAkgOiB7ICooLnJlbGEuZ290KQl9Ci0gIC5yZWwuY3RvcnMJIDogeyAqKC5yZWwuY3RvcnMpCX0KLSAgLnJlbGEuY3RvcnMJIDogeyAqKC5yZWxhLmN0b3JzKQl9Ci0gIC5yZWwuZHRvcnMJIDogeyAqKC5yZWwuZHRvcnMpCX0KLSAgLnJlbGEuZHRvcnMJIDogeyAqKC5yZWxhLmR0b3JzKQl9Ci0gIC5yZWwuYnNzCSA6IHsgKigucmVsLmJzcykJfQotICAucmVsYS5ic3MJIDogeyAqKC5yZWxhLmJzcykJfQotICAucmVsLnBsdAkgOiB7ICooLnJlbC5wbHQpCX0KLSAgLnJlbGEucGx0CSA6IHsgKigucmVsYS5wbHQpCX0KLSAgLmluaXQJCSA6IHsgKiguaW5pdCkJfQotICAucGx0IDogeyAqKC5wbHQpIH0KLSAgLnRleHQgOgotICB7Ci0gICAgYXJjaC9wb3dlcnBjL2NwdS9tcGM4Nnh4L3N0YXJ0Lm8JKC50ZXh0KQotICAgIGFyY2gvcG93ZXJwYy9jcHUvbXBjODZ4eC90cmFwcy5vICgudGV4dCkKLSAgICBhcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvaW50ZXJydXB0cy5vICgudGV4dCkKLSAgICBhcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvY3B1X2luaXQubyAoLnRleHQpCi0gICAgYXJjaC9wb3dlcnBjL2NwdS9tcGM4Nnh4L2NwdS5vICgudGV4dCkKLSAgICBhcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvc3BlZWQubyAoLnRleHQpCi0gICAgY29tbW9uL2RsbWFsbG9jLm8gKC50ZXh0KQotICAgIGxpYi9jcmMzMi5vICgudGV4dCkKLSAgICBhcmNoL3Bvd2VycGMvbGliL2V4dGFibGUubyAoLnRleHQpCi0gICAgbGliL3psaWIubyAoLnRleHQpCi0gICAgKigudGV4dCkKLSAgICAqKC5nb3QxKQotICAgfQotICAgIF9ldGV4dCA9IC47Ci0gICAgUFJPVklERSAoZXRleHQgPSAuKTsKLSAgICAucm9kYXRhICAgIDoKLSAgIHsKLSAgICAqKC5laF9mcmFtZSkKLSAgICAqKFNPUlRfQllfQUxJR05NRU5UKFNPUlRfQllfTkFNRSgucm9kYXRhKikpKQotICB9Ci0gIC5maW5pCSAgICAgOiB7ICooLmZpbmkpICAgIH0gPTAKLSAgLmN0b3JzICAgICA6IHsgKiguY3RvcnMpICAgfQotICAuZHRvcnMgICAgIDogeyAqKC5kdG9ycykgICB9Ci0KLSAgLyogUmVhZC13cml0ZSBzZWN0aW9uLCBtZXJnZWQgaW50byBkYXRhIHNlZ21lbnQ6ICovCi0gIC4gPSAoLiArIDB4MDBGRikgJiAweEZGRkZGRjAwOwotICBfZXJvdGV4dCA9IC47Ci0gIFBST1ZJREUgKGVyb3RleHQgPSAuKTsKLSAgLnJlbG9jICAgOgotICB7Ci0gICAgKiguZ290KQotICAgIF9HT1QyX1RBQkxFXyA9IC47Ci0gICAgKiguZ290MikKLSAgICBfRklYVVBfVEFCTEVfID0gLjsKLSAgICAqKC5maXh1cCkKLSAgfQotICBfX2dvdDJfZW50cmllcyA9IChfRklYVVBfVEFCTEVfIC0gX0dPVDJfVEFCTEVfKSA+PiAyOwotICBfX2ZpeHVwX2VudHJpZXMgPSAoLiAtIF9GSVhVUF9UQUJMRV8pID4+IDI7Ci0KLSAgLmRhdGEJICAgOgotICB7Ci0gICAgKiguZGF0YSkKLSAgICAqKC5kYXRhMSkKLSAgICAqKC5zZGF0YSkKLSAgICAqKC5zZGF0YTIpCi0gICAgKiguZHluYW1pYykKLSAgICBDT05TVFJVQ1RPUlMKLSAgfQotICBfZWRhdGEgID0gIC47Ci0gIFBST1ZJREUgKGVkYXRhID0gLik7Ci0KLSAgLiA9IC47Ci0gIF9fdV9ib290X2NtZF9zdGFydCA9IC47Ci0gIC51X2Jvb3RfY21kIDogeyAqKC51X2Jvb3RfY21kKSB9Ci0gIF9fdV9ib290X2NtZF9lbmQgPSAuOwotCi0gIC4gPSAuOwotICBfX3N0YXJ0X19fZXhfdGFibGUgPSAuOwotICBfX2V4X3RhYmxlIDogeyAqKF9fZXhfdGFibGUpIH0KLSAgX19zdG9wX19fZXhfdGFibGUgPSAuOwotCi0gIC4gPSBBTElHTigyNTYpOwotICBfX2luaXRfYmVnaW4gPSAuOwotICAudGV4dC5pbml0IDogeyAqKC50ZXh0LmluaXQpIH0KLSAgLmRhdGEuaW5pdCA6IHsgKiguZGF0YS5pbml0KSB9Ci0gIC4gPSBBTElHTigyNTYpOwotICBfX2luaXRfZW5kID0gLjsKLQotICBfX2Jzc19zdGFydCA9IC47Ci0gIC5ic3MgKE5PTE9BRCkJICAgICA6Ci0gIHsKLSAgICooLnNic3MpICooLnNjb21tb24pCi0gICAqKC5keW5ic3MpCi0gICAqKC5ic3MpCi0gICAqKENPTU1PTikKLSAgIC4gPSBBTElHTig0KTsKLSAgfQotICBfZW5kID0gLiA7Ci0gIFBST1ZJREUgKGVuZCA9IC4pOwotfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg2NDFocGNuL21wYzg2NDFocGNuLmMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODY0MWhwY24vbXBjODY0MWhwY24uYwppbmRleCBmZWUzMTBhLi4wOTJlYWQ2IDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjODY0MWhwY24vbXBjODY0MWhwY24uYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODY0MWhwY24vbXBjODY0MWhwY24uYwpAQCAtMTQyLDU2ICsxNDIsMjYgQEAKIAogdm9pZCBwY2lfaW5pdF9ib2FyZCh2b2lkKQogeworCXN0cnVjdCBmc2xfcGNpX2luZm8gcGNpX2luZm9bMl07CisJaW50IHBjaWVfZXA7CisJaW50IG51bSA9IDA7CisKICNpZmRlZiBDT05GSUdfUENJRTEKLXsKLQl2b2xhdGlsZSBjY3NyX2ZzbF9wY2lfdCAqcGNpID0gKGNjc3JfZnNsX3BjaV90ICopIENPTkZJR19TWVNfUENJRTFfQUREUjsKLQlzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UgPSAmcGNpZTFfaG9zZTsKLQlzdHJ1Y3QgcGNpX3JlZ2lvbiAqciA9IGhvc2UtPnJlZ2lvbnM7CiAJdm9sYXRpbGUgaW1tYXBfdCAqaW1tYXAgPSAoaW1tYXBfdCAqKSBDT05GSUdfU1lTX0NDU1JCQVI7CiAJdm9sYXRpbGUgY2Nzcl9ndXJfdCAqZ3VyID0gJmltbWFwLT5pbV9ndXI7Ci0JdWludCBkZXZkaXNyID0gZ3VyLT5kZXZkaXNyOworCXVpbnQgZGV2ZGlzciA9IGluX2JlMzIoJmd1ci0+ZGV2ZGlzcik7CiAJdWludCBpb19zZWwgPSAoZ3VyLT5wb3JkZXZzciAmIE1QQzg2NDFfUE9SREVWU1JfSU9fU0VMKQogCQk+PiBNUEM4NjQxX1BPUkRFVlNSX0lPX1NFTF9TSElGVDsKIAlpbnQgcGNpZV9jb25maWd1cmVkID0gaXNfZnNsX3BjaV9jZmcoTEFXX1RSR1RfSUZfUENJRV8xLCBpb19zZWwpOwogCi0jaWZkZWYgREVCVUcKLQl1aW50IGhvc3QxX2FnZW50ID0gKGd1ci0+cG9yYm1zciAmIE1QQzg2NDFfUE9SQk1TUl9IQSkKLQkJPj4gTVBDODY0MV9QT1JCTVNSX0hBX1NISUZUOwotCXVpbnQgcGV4MV9hZ2VudCA9IChob3N0MV9hZ2VudCA9PSAwKSB8fCAoaG9zdDFfYWdlbnQgPT0gMSk7Ci0jZW5kaWYKIAlpZiAocGNpZV9jb25maWd1cmVkICYmICEoZGV2ZGlzciAmIE1QQzg2eHhfREVWRElTUl9QQ0lFWDEpKSB7Ci0JCWRlYnVnKCJQQ0ktRVhQUkVTUyAxOiAlcyBcbiIsIHBleDFfYWdlbnQgPyAiQWdlbnQiIDogIkhvc3QiKTsKLQkJZGVidWcoIjB4JTA4eD0weCUwOHggIiwgJnBjaS0+cG1lX21zZ19kZXQsIHBjaS0+cG1lX21zZ19kZXQpOwotCQlpZiAocGNpLT5wbWVfbXNnX2RldCkgewotCQkJcGNpLT5wbWVfbXNnX2RldCA9IDB4ZmZmZmZmZmY7Ci0JCQlkZWJ1ZygiIHdpdGggZXJyb3JzLiAgQ2xlYXJpbmcuICBOb3cgMHglMDh4IiwKLQkJCSAgICAgIHBjaS0+cG1lX21zZ19kZXQpOwotCQl9Ci0JCWRlYnVnKCJcbiIpOwotCi0JCS8qIG91dGJvdW5kIG1lbW9yeSAqLwotCQlwY2lfc2V0X3JlZ2lvbihyKyssCi0JCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMsCi0JCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRSwKLQkJCSAgICAgICBQQ0lfUkVHSU9OX01FTSk7Ci0KLQkJLyogb3V0Ym91bmQgaW8gKi8KLQkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfSU9fQlVTLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfSU9fUEhZUywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX0lPX1NJWkUsCi0JCQkgICAgICAgUENJX1JFR0lPTl9JTyk7Ci0KLQkJaG9zZS0+cmVnaW9uX2NvdW50ID0gciAtIGhvc2UtPnJlZ2lvbnM7Ci0KLQkJaG9zZS0+Zmlyc3RfYnVzbm89Zmlyc3RfZnJlZV9idXNubzsKLQotCQlmc2xfcGNpX2luaXQoaG9zZSwgKHUzMikmcGNpLT5jZmdfYWRkciwgKHUzMikmcGNpLT5jZmdfZGF0YSk7Ci0KLQkJZmlyc3RfZnJlZV9idXNubz1ob3NlLT5sYXN0X2J1c25vKzE7Ci0JCXByaW50ZiAoIiAgICBQQ0ktRVhQUkVTUyAxIG9uIGJ1cyAlMDJ4IC0gJTAyeFxuIiwKLQkJCWhvc2UtPmZpcnN0X2J1c25vLGhvc2UtPmxhc3RfYnVzbm8pOworCQlTRVRfU1REX1BDSUVfSU5GTyhwY2lfaW5mb1tudW1dLCAxKTsKKwkJcGNpZV9lcCA9IGZzbF9zZXR1cF9ob3NlKCZwY2llMV9ob3NlLCBwY2lfaW5mb1tudW1dLnJlZ3MpOworCQlwcmludGYoIiAgICBQQ0lFMSBjb25uZWN0ZWQgdG8gVUxJIGFzICVzIChiYXNlIGFkZHIgJWx4KVxuIiwKKwkJCQlwY2llX2VwID8gIkVuZHBvaW50IiA6ICJSb290IENvbXBsZXgiLAorCQkJCXBjaV9pbmZvW251bV0ucmVncyk7CisJCWZpcnN0X2ZyZWVfYnVzbm8gPSBmc2xfcGNpX2luaXRfcG9ydCgmcGNpX2luZm9bbnVtKytdLAorCQkJCQkmcGNpZTFfaG9zZSwgZmlyc3RfZnJlZV9idXNubyk7CiAKIAkJLyoKIAkJICogQWN0aXZhdGUgVUxJMTU3NSBsZWdhY3kgY2hpcCBieSBwZXJmb3JtaW5nIGEgZmFrZQpAQCAtMjAxLDQ1ICsxNzEsMjIgQEAKIAkJCQkgICAgICAgKyBDT05GSUdfU1lTX1BDSUUxX01FTV9TSVpFIC0gMHgxMDAwMDAwKSkpOwogCiAJfSBlbHNlIHsKLQkJcHV0cygiUENJLUVYUFJFU1MgMTogRGlzYWJsZWRcbiIpOworCQlwdXRzKCIgICAgUENJRTE6IGRpc2FibGVkXG4iKTsKIAl9Ci19CiAjZWxzZQotCXB1dHMoIlBDSS1FWFBSRVNTMTogRGlzYWJsZWRcbiIpOworCXB1dHMoIiAgICBQQ0lFMTogZGlzYWJsZWRcbiIpOwogI2VuZGlmIC8qIENPTkZJR19QQ0lFMSAqLwogCiAjaWZkZWYgQ09ORklHX1BDSUUyCi17Ci0Jdm9sYXRpbGUgY2Nzcl9mc2xfcGNpX3QgKnBjaSA9IChjY3NyX2ZzbF9wY2lfdCAqKSBDT05GSUdfU1lTX1BDSUUyX0FERFI7Ci0Jc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlID0gJnBjaWUyX2hvc2U7Ci0Jc3RydWN0IHBjaV9yZWdpb24gKnIgPSBob3NlLT5yZWdpb25zOwotCi0JLyogb3V0Ym91bmQgbWVtb3J5ICovCi0JcGNpX3NldF9yZWdpb24ocisrLAotCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9NRU1fQlVTLAotCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUywKLQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfTUVNX1NJWkUsCi0JCSAgICAgICBQQ0lfUkVHSU9OX01FTSk7Ci0KLQkvKiBvdXRib3VuZCBpbyAqLwotCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfSU9fQlVTLAotCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9JT19QSFlTLAotCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9JT19TSVpFLAotCQkgICAgICAgUENJX1JFR0lPTl9JTyk7Ci0KLQlob3NlLT5yZWdpb25fY291bnQgPSByIC0gaG9zZS0+cmVnaW9uczsKLQotCWhvc2UtPmZpcnN0X2J1c25vPWZpcnN0X2ZyZWVfYnVzbm87Ci0KLQlmc2xfcGNpX2luaXQoaG9zZSwgKHUzMikmcGNpLT5jZmdfYWRkciwgKHUzMikmcGNpLT5jZmdfZGF0YSk7Ci0KLQlmaXJzdF9mcmVlX2J1c25vPWhvc2UtPmxhc3RfYnVzbm8rMTsKLQlwcmludGYgKCIgICAgUENJLUVYUFJFU1MgMiBvbiBidXMgJTAyeCAtICUwMnhcbiIsCi0JCWhvc2UtPmZpcnN0X2J1c25vLGhvc2UtPmxhc3RfYnVzbm8pOwotfQorCVNFVF9TVERfUENJRV9JTkZPKHBjaV9pbmZvW251bV0sIDIpOworCXBjaWVfZXAgPSBmc2xfc2V0dXBfaG9zZSgmcGNpZTJfaG9zZSwgcGNpX2luZm9bbnVtXS5yZWdzKTsKKwlwcmludGYoIiAgICBQQ0lFMiBjb25uZWN0ZWQgYXMgJXMgKGJhc2UgYWRkciAlbHgpXG4iLAorCQkJcGNpZV9lcCA/ICJFbmRwb2ludCIgOiAiUm9vdCBDb21wbGV4IiwKKwkJCXBjaV9pbmZvW251bV0ucmVncyk7CisJZmlyc3RfZnJlZV9idXNubyA9IGZzbF9wY2lfaW5pdF9wb3J0KCZwY2lfaW5mb1tudW0rK10sCisJCQkJJnBjaWUyX2hvc2UsIGZpcnN0X2ZyZWVfYnVzbm8pOwogI2Vsc2UKLQlwdXRzKCJQQ0ktRVhQUkVTUyAyOiBEaXNhYmxlZFxuIik7CisJcHV0cygiICAgIFBDSUUyOiBkaXNhYmxlZFxuIik7CiAjZW5kaWYgLyogQ09ORklHX1BDSUUyICovCiAKIH0KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NjQxaHBjbi91LWJvb3QubGRzIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg2NDFocGNuL3UtYm9vdC5sZHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZjBmMmQuLjAwMDAwMDAKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg2NDFocGNuL3UtYm9vdC5sZHMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDA2LCAyMDA3IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotT1VUUFVUX0FSQ0gocG93ZXJwYykKLQotU0VDVElPTlMKLXsKLQotICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KLSAgLmludGVycCA6IHsgKiguaW50ZXJwKSB9Ci0gIC5oYXNoICAgICAgICAgIDogeyAqKC5oYXNoKQkJfQotICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQotICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQotICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KLSAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQotICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KLSAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQotICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9Ci0gIC5yZWxhLmN0b3JzICAgIDogeyAqKC5yZWxhLmN0b3JzKQl9Ci0gIC5yZWwuZHRvcnMgICAgIDogeyAqKC5yZWwuZHRvcnMpCX0KLSAgLnJlbGEuZHRvcnMgICAgOiB7ICooLnJlbGEuZHRvcnMpCX0KLSAgLnJlbC5ic3MgICAgICAgOiB7ICooLnJlbC5ic3MpCQl9Ci0gIC5yZWxhLmJzcyAgICAgIDogeyAqKC5yZWxhLmJzcykJCX0KLSAgLnJlbC5wbHQgICAgICAgOiB7ICooLnJlbC5wbHQpCQl9Ci0gIC5yZWxhLnBsdCAgICAgIDogeyAqKC5yZWxhLnBsdCkJCX0KLSAgLmluaXQgICAgICAgICAgOiB7ICooLmluaXQpCX0KLSAgLnBsdCA6IHsgKigucGx0KSB9Ci0gIC50ZXh0ICAgICAgOgotICB7Ci0gICAgYXJjaC9wb3dlcnBjL2NwdS9tcGM4Nnh4L3N0YXJ0Lm8JKC50ZXh0KQotICAgIGFyY2gvcG93ZXJwYy9jcHUvbXBjODZ4eC90cmFwcy5vICgudGV4dCkKLSAgICBhcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvaW50ZXJydXB0cy5vICgudGV4dCkKLSAgICBhcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvY3B1X2luaXQubyAoLnRleHQpCi0gICAgYXJjaC9wb3dlcnBjL2NwdS9tcGM4Nnh4L2NwdS5vICgudGV4dCkKLSAgICBhcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvc3BlZWQubyAoLnRleHQpCi0gICAgY29tbW9uL2RsbWFsbG9jLm8gKC50ZXh0KQotICAgIGxpYi9jcmMzMi5vICgudGV4dCkKLSAgICBhcmNoL3Bvd2VycGMvbGliL2V4dGFibGUubyAoLnRleHQpCi0gICAgbGliL3psaWIubyAoLnRleHQpCi0gICAgZHJpdmVycy9iaW9zX2VtdWxhdG9yL2F0aWJpb3MubyAoLnRleHQpCi0gICAgKigudGV4dCkKLSAgICAqKC5nb3QxKQotICAgfQotICAgIF9ldGV4dCA9IC47Ci0gICAgUFJPVklERSAoZXRleHQgPSAuKTsKLSAgICAucm9kYXRhICAgIDoKLSAgIHsKLSAgICAqKC5laF9mcmFtZSkKLSAgICAqKFNPUlRfQllfQUxJR05NRU5UKFNPUlRfQllfTkFNRSgucm9kYXRhKikpKQotICB9Ci0gIC5maW5pICAgICAgOiB7ICooLmZpbmkpICAgIH0gPTAKLSAgLmN0b3JzICAgICA6IHsgKiguY3RvcnMpICAgfQotICAuZHRvcnMgICAgIDogeyAqKC5kdG9ycykgICB9Ci0KLSAgLyogUmVhZC13cml0ZSBzZWN0aW9uLCBtZXJnZWQgaW50byBkYXRhIHNlZ21lbnQ6ICovCi0gIC4gPSAoLiArIDB4MDBGRikgJiAweEZGRkZGRjAwOwotICBfZXJvdGV4dCA9IC47Ci0gIFBST1ZJREUgKGVyb3RleHQgPSAuKTsKLSAgLnJlbG9jICAgOgotICB7Ci0gICAgKiguZ290KQotICAgIF9HT1QyX1RBQkxFXyA9IC47Ci0gICAgKiguZ290MikKLSAgICBfRklYVVBfVEFCTEVfID0gLjsKLSAgICAqKC5maXh1cCkKLSAgfQotICBfX2dvdDJfZW50cmllcyA9IChfRklYVVBfVEFCTEVfIC0gX0dPVDJfVEFCTEVfKSA+PiAyOwotICBfX2ZpeHVwX2VudHJpZXMgPSAoLiAtIF9GSVhVUF9UQUJMRV8pID4+IDI7Ci0KLSAgLmRhdGEgICAgOgotICB7Ci0gICAgKiguZGF0YSkKLSAgICAqKC5kYXRhMSkKLSAgICAqKC5zZGF0YSkKLSAgICAqKC5zZGF0YTIpCi0gICAgKiguZHluYW1pYykKLSAgICBDT05TVFJVQ1RPUlMKLSAgfQotICBfZWRhdGEgID0gIC47Ci0gIFBST1ZJREUgKGVkYXRhID0gLik7Ci0KLSAgLiA9IC47Ci0gIF9fdV9ib290X2NtZF9zdGFydCA9IC47Ci0gIC51X2Jvb3RfY21kIDogeyAqKC51X2Jvb3RfY21kKSB9Ci0gIF9fdV9ib290X2NtZF9lbmQgPSAuOwotCi0gIC4gPSAuOwotICBfX3N0YXJ0X19fZXhfdGFibGUgPSAuOwotICBfX2V4X3RhYmxlIDogeyAqKF9fZXhfdGFibGUpIH0KLSAgX19zdG9wX19fZXhfdGFibGUgPSAuOwotCi0gIC4gPSBBTElHTigyNTYpOwotICBfX2luaXRfYmVnaW4gPSAuOwotICAudGV4dC5pbml0IDogeyAqKC50ZXh0LmluaXQpIH0KLSAgLmRhdGEuaW5pdCA6IHsgKiguZGF0YS5pbml0KSB9Ci0gIC4gPSBBTElHTigyNTYpOwotICBfX2luaXRfZW5kID0gLjsKLQotICBfX2Jzc19zdGFydCA9IC47Ci0gIC5ic3MgKE5PTE9BRCkgICAgICAgOgotICB7Ci0gICAqKC5zYnNzKSAqKC5zY29tbW9uKQotICAgKiguZHluYnNzKQotICAgKiguYnNzKQotICAgKihDT01NT04pCi0gICAuID0gQUxJR04oNCk7Ci0gIH0KLSAgX2VuZCA9IC4gOwotICBQUk9WSURFIChlbmQgPSAuKTsKLX0KZGlmZiAtLWdpdCBhL2JvYXJkL2dkc3lzLzQwNWVwLzQwNWVwLmMgYi9ib2FyZC9nZHN5cy80MDVlcC80MDVlcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYmQyMzMKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9nZHN5cy80MDVlcC80MDVlcC5jCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMTAKKyAqIERpcmsgRWliYWNoLCAgR3VudGVybWFubiAmIERydW5jayBHbWJILCBlaWJhY2hAZ2RzeXMuZGUKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8Y29tbWFuZC5oPgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vcHBjNHh4LWdwaW8uaD4KKworI2luY2x1ZGUgIi4uL2NvbW1vbi9mcGdhLmgiCisKKyNkZWZpbmUgTEFUQ0gwX0JBU0UgKENPTkZJR19TWVNfTEFUQ0hfQkFTRSkKKyNkZWZpbmUgTEFUQ0gxX0JBU0UgKENPTkZJR19TWVNfTEFUQ0hfQkFTRSArIDB4MTAwKQorI2RlZmluZSBMQVRDSDJfQkFTRSAoQ09ORklHX1NZU19MQVRDSF9CQVNFICsgMHgyMDApCisKKyNkZWZpbmUgUkVGTEVDVElPTl9URVNUUEFUVEVSTiAweGRlZGUKKyNkZWZpbmUgUkVGTEVDVElPTl9URVNUUEFUVEVSTl9JTlYgKH5SRUZMRUNUSU9OX1RFU1RQQVRURVJOICYgMHhmZmZmKQorCitpbnQgYm9hcmRfZWFybHlfaW5pdF9mKHZvaWQpCit7CisJbXRkY3IoVUlDMFNSLCAweEZGRkZGRkZGKTsJLyogY2xlYXIgYWxsIGludHMgKi8KKwltdGRjcihVSUMwRVIsIDB4MDAwMDAwMDApOwkvKiBkaXNhYmxlIGFsbCBpbnRzICovCisJbXRkY3IoVUlDMENSLCAweDAwMDAwMDAwKTsJLyogc2V0IGFsbCB0byBiZSBub24tY3JpdGljYWwgKi8KKwltdGRjcihVSUMwUFIsIDB4RkZGRkZGODApOwkvKiBzZXQgaW50IHBvbGFyaXRpZXMgKi8KKwltdGRjcihVSUMwVFIsIDB4MTAwMDAwMDApOwkvKiBzZXQgaW50IHRyaWdnZXIgbGV2ZWxzICovCisJbXRkY3IoVUlDMFZDUiwgMHgwMDAwMDAwMSk7CS8qIHNldCB2ZWN0IGJhc2U9MCxJTlQwIGhpZ2hlc3QgcHJpbyAqLworCW10ZGNyKFVJQzBTUiwgMHhGRkZGRkZGRik7CS8qIGNsZWFyIGFsbCBpbnRzICovCisKKwkvKgorCSAqIEVCQyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiBzZXQgcmVhZHkgdGltZW91dCB0byA1MTIgZWJjLWNsa3MKKwkgKiAtPiBjYS4gMTUgdXMKKwkgKi8KKwltdGViYyhFQkMwX0NGRywgMHhhODQwMDAwMCk7CS8qIGViYyBhbHdheXMgZHJpdmVuICovCisKKwkvKgorCSAqIHNldHVwIGlvLWxhdGNoZXMgZm9yIHJlc2V0CisJICovCisJb3V0X2xlMTYoKHZvaWQgKilMQVRDSDBfQkFTRSwgQ09ORklHX1NZU19MQVRDSDBfUkVTRVQpOworCW91dF9sZTE2KCh2b2lkICopTEFUQ0gxX0JBU0UsIENPTkZJR19TWVNfTEFUQ0gxX1JFU0VUKTsKKworCS8qCisJICogc2V0ICJzdGFydHVwLWZpbmlzaGVkIi1ncGlvcworCSAqLworCWdwaW9fd3JpdGVfYml0KDIxLCAwKTsKKwlncGlvX3dyaXRlX2JpdCgyMiwgMSk7CisKKwkvKgorCSAqIHdhaXQgZm9yIGZwZ2EtZG9uZQorCSAqIGZhaWwgdW5ncmFjZWZ1bCBpZiBmcGdhIGlzIG5vdCBjb25maWd1cmluZyBwcm9wZXJseQorCSAqLworCXdoaWxlICghKGluX2xlMTYoKHZvaWQgKilMQVRDSDJfQkFTRSkgJiAweDAwMTApKQorCQk7CisKKwkvKgorCSAqIHNldHVwIGlvLWxhdGNoZXMgZm9yIGJvb3QgKHN0b3AgcmVzZXQpCisJICovCisJdWRlbGF5KDEwKTsKKwlvdXRfbGUxNigodm9pZCAqKUxBVENIMF9CQVNFLCBDT05GSUdfU1lTX0xBVENIMF9CT09UKTsKKwlvdXRfbGUxNigodm9pZCAqKUxBVENIMV9CQVNFLCBDT05GSUdfU1lTX0xBVENIMV9CT09UKTsKKworCS8qCisJICogd2FpdCBmb3IgZnBnYSBvdXQgb2YgcmVzZXQKKwkgKiBmYWlsIHVuZ3JhY2VmdWwgaWYgZnBnYSBpcyBub3Qgd29ya2luZyBwcm9wZXJseQorCSAqLworCXdoaWxlICgxKSB7CisJCWZwZ2Ffc2V0X3JlZyhDT05GSUdfU1lTX0ZQR0FfUkZMX0xPVywgUkVGTEVDVElPTl9URVNUUEFUVEVSTik7CisJCWlmIChmcGdhX2dldF9yZWcoQ09ORklHX1NZU19GUEdBX1JGTF9ISUdIKSA9PQorCQkJUkVGTEVDVElPTl9URVNUUEFUVEVSTl9JTlYpCisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2JvYXJkL3dlcGVwMjUwL01ha2VmaWxlIGIvYm9hcmQvZ2RzeXMvNDA1ZXAvTWFrZWZpbGUKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gYm9hcmQvd2VwZXAyNTAvTWFrZWZpbGUKcmVuYW1lIHRvIGJvYXJkL2dkc3lzLzQwNWVwL01ha2VmaWxlCmluZGV4IDA2NjliMGUuLjEzZGZmNTIgMTAwNjQ0Ci0tLSBhL2JvYXJkL3dlcGVwMjUwL01ha2VmaWxlCisrKyBiL2JvYXJkL2dkc3lzLzQwNWVwL01ha2VmaWxlCkBAIC0xLDYgKzEsNiBAQAogIwotIyAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNgotIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorIyAoQykgQ29weXJpZ2h0IDIwMDcKKyMgU3RlZmFuIFJvZXNlLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCBzckBkZW54LmRlLgogIwogIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogIyBwcm9qZWN0LgpAQCAtMjUsMTQgKzI1LDE3IEBACiAKIExJQgk9ICQob2JqKWxpYiQoQk9BUkQpLmEKIAotQ09CSlMJOj0gd2VwZXAyNTAubyBmbGFzaC5vCi1TT0JKUwk6PSBsb3dsZXZlbF9pbml0Lm8KK0NPQkpTLSQoQ09ORklHX0lPKSArPSBpby5vCitDT0JKUy0kKENPTkZJR19JT0NPTikgKz0gaW9jb24ubworCitDT0JKUyAgIDo9ICQoQk9BUkQpLm8gJChDT0JKUy15KQorU09CSlMgICA9CiAKIFNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQogU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQogCi0kKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKQorJChMSUIpOgkkKE9CSlMpICQoU09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCiAKIGNsZWFuOgpkaWZmIC0tZ2l0IGEvYm9hcmQvZ2RzeXMvNDA1ZXAvaW8uYyBiL2JvYXJkL2dkc3lzLzQwNWVwL2lvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA4NzdiNgotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2dkc3lzLzQwNWVwL2lvLmMKQEAgLTAsMCArMSwxODEgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMTAKKyAqIERpcmsgRWliYWNoLCAgR3VudGVybWFubiAmIERydW5jayBHbWJILCBlaWJhY2hAZ2RzeXMuZGUKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8Y29tbWFuZC5oPgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vcHBjNHh4LWdwaW8uaD4KKworI2luY2x1ZGUgPG1paXBoeS5oPgorCisjaW5jbHVkZSAiLi4vY29tbW9uL2ZwZ2EuaCIKKworI2RlZmluZSBQSFlSRUdfQ09OVFJPTAkJCQkwCisjZGVmaW5lIFBIWVJFR19QQUdFX0FERFJFU1MJCQkyMgorI2RlZmluZSBQSFlSRUdfUEcwX0NPUFBFUl9TUEVDSUZJQ19DT05UUk9MXzEJMTYKKyNkZWZpbmUgUEhZUkVHX1BHMl9DT1BQRVJfU1BFQ0lGSUNfQ09OVFJPTF8yCTI2CisKK2VudW0geworCVJFR19WRVJTSU9OUyA9IDB4MDAwMiwKKwlSRUdfRlBHQV9GRUFUVVJFUyA9IDB4MDAwNCwKKwlSRUdfRlBHQV9WRVJTSU9OID0gMHgwMDA2LAorCVJFR19RVUFEX1NFUkRFU19SRVNFVCA9IDB4MDAxMiwKK307CisKK2VudW0geworCVVOSVRUWVBFX0NDRF9TV0lUQ0ggPSAxLAorfTsKKworZW51bSB7CisJSFdWRVJfMTAwID0gMCwKKwlIV1ZFUl8xMTAgPSAxLAorCUhXVkVSXzEyMSA9IDIsCisJSFdWRVJfMTIyID0gMywKK307CisKK2ludCBjb25maWd1cmVfZ2JpdF9waHkodW5zaWduZWQgY2hhciBhZGRyKQoreworCXVuc2lnbmVkIHNob3J0IHZhbHVlOworCisJLyogc2VsZWN0IHBhZ2UgMiAqLworCWlmIChtaWlwaHlfd3JpdGUoQ09ORklHX1NZU19HQklUX01JSV9CVVNOQU1FLCBhZGRyLAorCQlQSFlSRUdfUEFHRV9BRERSRVNTLCAweDAwMDIpKQorCQlnb3RvIGVycl9vdXQ7CisJLyogZGlzYWJsZSBTR01JSSBhdXRvbmVnb3RpYXRpb24gKi8KKwlpZiAobWlpcGh5X3dyaXRlKENPTkZJR19TWVNfR0JJVF9NSUlfQlVTTkFNRSwgYWRkciwKKwkJUEhZUkVHX1BHMl9DT1BQRVJfU1BFQ0lGSUNfQ09OVFJPTF8yLCAweDgwMGEpKQorCQlnb3RvIGVycl9vdXQ7CisJLyogc2VsZWN0IHBhZ2UgMCAqLworCWlmIChtaWlwaHlfd3JpdGUoQ09ORklHX1NZU19HQklUX01JSV9CVVNOQU1FLCBhZGRyLAorCQlQSFlSRUdfUEFHRV9BRERSRVNTLCAweDAwMDApKQorCQlnb3RvIGVycl9vdXQ7CisJLyogc3dpdGNoIGZyb20gcG93ZXJkb3duIHRvIG5vcm1hbCBvcGVyYXRpb24gKi8KKwlpZiAobWlpcGh5X3JlYWQoQ09ORklHX1NZU19HQklUX01JSV9CVVNOQU1FLCBhZGRyLAorCQlQSFlSRUdfUEcwX0NPUFBFUl9TUEVDSUZJQ19DT05UUk9MXzEsICZ2YWx1ZSkpCisJCWdvdG8gZXJyX291dDsKKwlpZiAobWlpcGh5X3dyaXRlKENPTkZJR19TWVNfR0JJVF9NSUlfQlVTTkFNRSwgYWRkciwKKwkJUEhZUkVHX1BHMF9DT1BQRVJfU1BFQ0lGSUNfQ09OVFJPTF8xLCB2YWx1ZSAmIH4weDAwMDQpKQorCQlnb3RvIGVycl9vdXQ7CisJLyogcmVzZXQgcGh5IHNvIHNldHRpbmdzIHRha2UgZWZmZWN0ICovCisJaWYgKG1paXBoeV93cml0ZShDT05GSUdfU1lTX0dCSVRfTUlJX0JVU05BTUUsIGFkZHIsCisJCVBIWVJFR19DT05UUk9MLCAweDkxNDApKQorCQlnb3RvIGVycl9vdXQ7CisKKwlyZXR1cm4gMDsKKworZXJyX291dDoKKwlwcmludGYoIkVycm9yIHdyaXRpbmcgdG8gdGhlIFBIWSBhZGRyPSUwMnhcbiIsIGFkZHIpOworCXJldHVybiAtMTsKK30KKworLyoKKyAqIENoZWNrIEJvYXJkIElkZW50aXR5OgorICovCitpbnQgY2hlY2tib2FyZCh2b2lkKQoreworCWNoYXIgKnMgPSBnZXRlbnYoInNlcmlhbCMiKTsKKwl1MTYgdmVyc2lvbnMgPSBmcGdhX2dldF9yZWcoUkVHX1ZFUlNJT05TKTsKKwl1MTYgZnBnYV92ZXJzaW9uID0gZnBnYV9nZXRfcmVnKFJFR19GUEdBX1ZFUlNJT04pOworCXUxNiBmcGdhX2ZlYXR1cmVzID0gZnBnYV9nZXRfcmVnKFJFR19GUEdBX0ZFQVRVUkVTKTsKKwl1bnNpZ25lZCB1bml0X3R5cGU7CisJdW5zaWduZWQgaGFyZHdhcmVfdmVyc2lvbjsKKwl1bnNpZ25lZCBmZWF0dXJlX2NoYW5uZWxzOworCXVuc2lnbmVkIGZlYXR1cmVfZXhwYW5zaW9uOworCisJdW5pdF90eXBlID0gKHZlcnNpb25zICYgMHhmMDAwKSA+PiAxMjsKKwloYXJkd2FyZV92ZXJzaW9uID0gdmVyc2lvbnMgJiAweDAwMGY7CisJZmVhdHVyZV9jaGFubmVscyA9IGZwZ2FfZmVhdHVyZXMgJiAweDAwN2Y7CisJZmVhdHVyZV9leHBhbnNpb24gPSBmcGdhX2ZlYXR1cmVzICYgKDE8PDE1KTsKKworCXByaW50ZigiQm9hcmQ6ICIpOworCisJcHJpbnRmKCJDQVRDZW50ZXIgSW8iKTsKKworCWlmIChzICE9IE5VTEwpIHsKKwkJcHV0cygiLCBzZXJpYWwjICIpOworCQlwdXRzKHMpOworCX0KKwlwdXRzKCJcbiAgICAgICAiKTsKKworCXN3aXRjaCAodW5pdF90eXBlKSB7CisJY2FzZSBVTklUVFlQRV9DQ0RfU1dJVENIOgorCQlwcmludGYoIkNDRC1Td2l0Y2giKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlwcmludGYoIlVuaXRUeXBlICVkKG5vdCBzdXBwb3J0ZWQpIiwgdW5pdF90eXBlKTsKKwkJYnJlYWs7CisJfQorCisJc3dpdGNoIChoYXJkd2FyZV92ZXJzaW9uKSB7CisJY2FzZSBIV1ZFUl8xMDA6CisJCXByaW50ZigiIEhXLVZlciAxLjAwXG4iKTsKKwkJYnJlYWs7CisKKwljYXNlIEhXVkVSXzExMDoKKwkJcHJpbnRmKCIgSFctVmVyIDEuMTBcbiIpOworCQlicmVhazsKKworCWNhc2UgSFdWRVJfMTIxOgorCQlwcmludGYoIiBIVy1WZXIgMS4yMVxuIik7CisJCWJyZWFrOworCisJY2FzZSBIV1ZFUl8xMjI6CisJCXByaW50ZigiIEhXLVZlciAxLjIyXG4iKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlwcmludGYoIiBIVy1WZXIgJWQobm90IHN1cHBvcnRlZClcbiIsCisJCSAgICAgICBoYXJkd2FyZV92ZXJzaW9uKTsKKwkJYnJlYWs7CisJfQorCisJcHJpbnRmKCIgICAgICAgRlBHQSBWICVkLiUwMmQsIGZlYXR1cmVzOiIsCisJCWZwZ2FfdmVyc2lvbiAvIDEwMCwgZnBnYV92ZXJzaW9uICUgMTAwKTsKKworCXByaW50ZigiICVkIGNoYW5uZWwocykiLCBmZWF0dXJlX2NoYW5uZWxzKTsKKworCXByaW50ZigiLCBleHBhbnNpb24gJXNzdXBwb3J0ZWRcbiIsIGZlYXR1cmVfZXhwYW5zaW9uID8gIiIgOiAidW4iKTsKKworCXJldHVybiAwOworfQorCisvKgorICogc2V0dXAgR2JpdCBQSFlzCisgKi8KK2ludCBsYXN0X3N0YWdlX2luaXQodm9pZCkKK3sKKwl1bnNpZ25lZCBpbnQgazsKKworCW1paXBoeV9yZWdpc3RlcihDT05GSUdfU1lTX0dCSVRfTUlJX0JVU05BTUUsCisJCWJiX21paXBoeV9yZWFkLCBiYl9taWlwaHlfd3JpdGUpOworCisJZm9yIChrID0gMDsgayA8IDMyOyArK2spCisJCWNvbmZpZ3VyZV9nYml0X3BoeShrKTsKKworCS8qIHRha2UgZnBnYSBzZXJkZXMgYmxvY2tzIG91dCBvZiByZXNldCAqLworCWZwZ2Ffc2V0X3JlZyhSRUdfUVVBRF9TRVJERVNfUkVTRVQsIDApOworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9nZHN5cy80MDVlcC9pb2Nvbi5jIGIvYm9hcmQvZ2RzeXMvNDA1ZXAvaW9jb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2Q2Y2IyCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZ2RzeXMvNDA1ZXAvaW9jb24uYwpAQCAtMCwwICsxLDIzNiBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAxMAorICogRGlyayBFaWJhY2gsICBHdW50ZXJtYW5uICYgRHJ1bmNrIEdtYkgsIGVpYmFjaEBnZHN5cy5kZQorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxjb21tYW5kLmg+CisjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9wcGM0eHgtZ3Bpby5oPgorCisjaW5jbHVkZSAiLi4vY29tbW9uL2ZwZ2EuaCIKKyNpbmNsdWRlICIuLi9jb21tb24vb3NkLmgiCisKK2VudW0geworCVJFR19WRVJTSU9OUyA9IDB4MDAwMiwKKwlSRUdfRlBHQV9WRVJTSU9OID0gMHgwMDA0LAorCVJFR19GUEdBX0ZFQVRVUkVTID0gMHgwMDA2LAorfTsKKworZW51bSB7CisJVU5JVFRZUEVfTUFJTl9TRVJWRVIgPSAwLAorCVVOSVRUWVBFX01BSU5fVVNFUiA9IDEsCisJVU5JVFRZUEVfVklERU9fU0VSVkVSID0gMiwKKwlVTklUVFlQRV9WSURFT19VU0VSID0gMywKK307CisKK2VudW0geworCUhXVkVSXzEwMCA9IDAsCisJSFdWRVJfMTA0ID0gMSwKKwlIV1ZFUl8xMTAgPSAyLAorfTsKKworZW51bSB7CisJQ09NUFJFU1NJT05fTk9ORSA9IDAsCisJQ09NUFJFU1NJT05fVFlQRTFfREVMVEEsCit9OworCitlbnVtIHsKKwlBVURJT19OT05FID0gMCwKKwlBVURJT19UWCA9IDEsCisJQVVESU9fUlggPSAyLAorCUFVRElPX1JYVFggPSAzLAorfTsKKworZW51bSB7CisJU1lTQ0xLXzE0NzQ1NiA9IDAsCit9OworCitlbnVtIHsKKwlSQU1fRERSMl8zMiA9IDAsCit9OworCisvKgorICogQ2hlY2sgQm9hcmQgSWRlbnRpdHk6CisgKi8KK2ludCBjaGVja2JvYXJkKHZvaWQpCit7CisJY2hhciAqcyA9IGdldGVudigic2VyaWFsIyIpOworCXUxNiB2ZXJzaW9ucyA9IGZwZ2FfZ2V0X3JlZyhSRUdfVkVSU0lPTlMpOworCXUxNiBmcGdhX3ZlcnNpb24gPSBmcGdhX2dldF9yZWcoUkVHX0ZQR0FfVkVSU0lPTik7CisJdTE2IGZwZ2FfZmVhdHVyZXMgPSBmcGdhX2dldF9yZWcoUkVHX0ZQR0FfRkVBVFVSRVMpOworCXVuc2lnbmVkIHVuaXRfdHlwZTsKKwl1bnNpZ25lZCBoYXJkd2FyZV92ZXJzaW9uOworCXVuc2lnbmVkIGZlYXR1cmVfY29tcHJlc3Npb247CisJdW5zaWduZWQgZmVhdHVyZV9vc2Q7CisJdW5zaWduZWQgZmVhdHVyZV9hdWRpbzsKKwl1bnNpZ25lZCBmZWF0dXJlX3N5c2Nsb2NrOworCXVuc2lnbmVkIGZlYXR1cmVfcmFtY29uZmlnOworCXVuc2lnbmVkIGZlYXR1cmVfY2FycmllcnM7CisJdW5zaWduZWQgZmVhdHVyZV92aWRlb19jaGFubmVsczsKKworCXVuaXRfdHlwZSA9ICh2ZXJzaW9ucyAmIDB4ZjAwMCkgPj4gMTI7CisJaGFyZHdhcmVfdmVyc2lvbiA9IHZlcnNpb25zICYgMHgwMDBmOworCWZlYXR1cmVfY29tcHJlc3Npb24gPSAoZnBnYV9mZWF0dXJlcyAmIDB4ZTAwMCkgPj4gMTM7CisJZmVhdHVyZV9vc2QgPSBmcGdhX2ZlYXR1cmVzICYgKDE8PDExKTsKKwlmZWF0dXJlX2F1ZGlvID0gKGZwZ2FfZmVhdHVyZXMgJiAweDA2MDApID4+IDk7CisJZmVhdHVyZV9zeXNjbG9jayA9IChmcGdhX2ZlYXR1cmVzICYgMHgwMTgwKSA+PiA3OworCWZlYXR1cmVfcmFtY29uZmlnID0gKGZwZ2FfZmVhdHVyZXMgJiAweDAwNjApID4+IDU7CisJZmVhdHVyZV9jYXJyaWVycyA9IChmcGdhX2ZlYXR1cmVzICYgMHgwMDBjKSA+PiAyOworCWZlYXR1cmVfdmlkZW9fY2hhbm5lbHMgPSBmcGdhX2ZlYXR1cmVzICYgMHgwMDAzOworCisJcHJpbnRmKCJCb2FyZDogIik7CisKKwlwcmludGYoIklvQ29uIik7CisKKwlpZiAocyAhPSBOVUxMKSB7CisJCXB1dHMoIiwgc2VyaWFsIyAiKTsKKwkJcHV0cyhzKTsKKwl9CisJcHV0cygiXG4gICAgICAgIik7CisKKwlzd2l0Y2ggKHVuaXRfdHlwZSkgeworCWNhc2UgVU5JVFRZUEVfTUFJTl9VU0VSOgorCQlwcmludGYoIk1haW5jaGFubmVsIik7CisJCWJyZWFrOworCisJY2FzZSBVTklUVFlQRV9WSURFT19VU0VSOgorCQlwcmludGYoIlZpZGVvY2hhbm5lbCIpOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCXByaW50ZigiVW5pdFR5cGUgJWQobm90IHN1cHBvcnRlZCkiLCB1bml0X3R5cGUpOworCQlicmVhazsKKwl9CisKKwlzd2l0Y2ggKGhhcmR3YXJlX3ZlcnNpb24pIHsKKwljYXNlIEhXVkVSXzEwMDoKKwkJcHJpbnRmKCIgSFctVmVyIDEuMDBcbiIpOworCQlicmVhazsKKworCWNhc2UgSFdWRVJfMTA0OgorCQlwcmludGYoIiBIVy1WZXIgMS4wNFxuIik7CisJCWJyZWFrOworCisJY2FzZSBIV1ZFUl8xMTA6CisJCXByaW50ZigiIEhXLVZlciAxLjEwXG4iKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlwcmludGYoIiBIVy1WZXIgJWQobm90IHN1cHBvcnRlZClcbiIsCisJCSAgICAgICBoYXJkd2FyZV92ZXJzaW9uKTsKKwkJYnJlYWs7CisJfQorCisJcHJpbnRmKCIgICAgICAgRlBHQSBWICVkLiUwMmQsIGZlYXR1cmVzOiIsCisJCWZwZ2FfdmVyc2lvbiAvIDEwMCwgZnBnYV92ZXJzaW9uICUgMTAwKTsKKworCisJc3dpdGNoIChmZWF0dXJlX2NvbXByZXNzaW9uKSB7CisJY2FzZSBDT01QUkVTU0lPTl9OT05FOgorCQlwcmludGYoIiBubyBjb21wcmVzc2lvbiIpOworCQlicmVhazsKKworCWNhc2UgQ09NUFJFU1NJT05fVFlQRTFfREVMVEE6CisJCXByaW50ZigiIHR5cGUxLWRlbHRhY29tcHJlc3Npb24iKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlwcmludGYoIiBjb21wcmVzc2lvbiAlZChub3Qgc3VwcG9ydGVkKSIsIGZlYXR1cmVfY29tcHJlc3Npb24pOworCQlicmVhazsKKwl9CisKKwlwcmludGYoIiwgJXNvc2QiLCBmZWF0dXJlX29zZCA/ICIiIDogIm5vICIpOworCisJc3dpdGNoIChmZWF0dXJlX2F1ZGlvKSB7CisJY2FzZSBBVURJT19OT05FOgorCQlwcmludGYoIiwgbm8gYXVkaW8iKTsKKwkJYnJlYWs7CisKKwljYXNlIEFVRElPX1RYOgorCQlwcmludGYoIiwgYXVkaW8gdHgiKTsKKwkJYnJlYWs7CisKKwljYXNlIEFVRElPX1JYOgorCQlwcmludGYoIiwgYXVkaW8gcngiKTsKKwkJYnJlYWs7CisKKwljYXNlIEFVRElPX1JYVFg6CisJCXByaW50ZigiLCBhdWRpbyByeCt0eCIpOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCXByaW50ZigiLCBhdWRpbyAlZChub3Qgc3VwcG9ydGVkKSIsIGZlYXR1cmVfYXVkaW8pOworCQlicmVhazsKKwl9CisKKwlwdXRzKCIsXG4gICAgICAgIik7CisKKwlzd2l0Y2ggKGZlYXR1cmVfc3lzY2xvY2spIHsKKwljYXNlIFNZU0NMS18xNDc0NTY6CisJCXByaW50ZigiY2xvY2sgMTQ3LjQ1NiBNSHoiKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlwcmludGYoImNsb2NrICVkKG5vdCBzdXBwb3J0ZWQpIiwgZmVhdHVyZV9zeXNjbG9jayk7CisJCWJyZWFrOworCX0KKworCXN3aXRjaCAoZmVhdHVyZV9yYW1jb25maWcpIHsKKwljYXNlIFJBTV9ERFIyXzMyOgorCQlwcmludGYoIiwgUkFNIDMyIGJpdCBERFIyIik7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJcHJpbnRmKCIsIFJBTSAlZChub3Qgc3VwcG9ydGVkKSIsIGZlYXR1cmVfcmFtY29uZmlnKTsKKwkJYnJlYWs7CisJfQorCisJcHJpbnRmKCIsICVkIGNhcnJpZXIocykiLCBmZWF0dXJlX2NhcnJpZXJzKTsKKworCXByaW50ZigiLCAlZCB2aWRlbyBjaGFubmVsKHMpXG4iLCBmZWF0dXJlX3ZpZGVvX2NoYW5uZWxzKTsKKworCXJldHVybiAwOworfQorCitpbnQgbGFzdF9zdGFnZV9pbml0KHZvaWQpCit7CisJcmV0dXJuIG9zZF9wcm9iZSgpOworfQorCisvKgorICogcHJvdmlkZSBhY2Nlc3MgdG8gZnBnYSBncGlvcyAoZm9yIEkyQyBiaXRiYW5nKQorICovCit2b2lkIGZwZ2FfZ3Bpb19zZXQoaW50IHBpbikKK3sKKwlvdXRfbGUxNigodm9pZCAqKShDT05GSUdfU1lTX0ZQR0FfQkFTRSArIDB4MTgpLCBwaW4pOworfQorCit2b2lkIGZwZ2FfZ3Bpb19jbGVhcihpbnQgcGluKQoreworCW91dF9sZTE2KCh2b2lkICopKENPTkZJR19TWVNfRlBHQV9CQVNFICsgMHgxNiksIHBpbik7Cit9CisKK2ludCBmcGdhX2dwaW9fZ2V0KGludCBwaW4pCit7CisJcmV0dXJuIGluX2xlMTYoKHZvaWQgKikoQ09ORklHX1NZU19GUEdBX0JBU0UgKyAweDE0KSkgJiBwaW47Cit9CmRpZmYgLS1naXQgYS9ib2FyZC93ZXBlcDI1MC9NYWtlZmlsZSBiL2JvYXJkL2dkc3lzL2NvbW1vbi9NYWtlZmlsZQpzaW1pbGFyaXR5IGluZGV4IDgwJQpjb3B5IGZyb20gYm9hcmQvd2VwZXAyNTAvTWFrZWZpbGUKY29weSB0byBib2FyZC9nZHN5cy9jb21tb24vTWFrZWZpbGUKaW5kZXggMDY2OWIwZS4uOTNjZGU1YSAxMDA2NDQKLS0tIGEvYm9hcmQvd2VwZXAyNTAvTWFrZWZpbGUKKysrIGIvYm9hcmQvZ2RzeXMvY29tbW9uL01ha2VmaWxlCkBAIC0xLDYgKzEsNiBAQAogIwotIyAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNgotIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorIyAoQykgQ29weXJpZ2h0IDIwMDcKKyMgU3RlZmFuIFJvZXNlLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCBzckBkZW54LmRlLgogIwogIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogIyBwcm9qZWN0LgpAQCAtMjMsMTYgKzIzLDIzIEBACiAKIGluY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5tawogCi1MSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCitpZm5lcSAoJChPQkpUUkVFKSwkKFNSQ1RSRUUpKQorJChzaGVsbCBta2RpciAtcCAkKG9iailib2FyZC8kKFZFTkRPUikvY29tbW9uKQorZW5kaWYKIAotQ09CSlMJOj0gd2VwZXAyNTAubyBmbGFzaC5vCi1TT0JKUwk6PSBsb3dsZXZlbF9pbml0Lm8KK0xJQgk9ICQob2JqKWxpYiQoVkVORE9SKS5hCisKK0NPQkpTLSQoQ09ORklHX0lPKSArPSBtaWlwaHliYi5vCitDT0JKUy0kKENPTkZJR19JT0NPTikgKz0gb3NkLm8KKworQ09CSlMgICA6PSAkKENPQkpTLXkpCitTT0JKUyAgID0KIAogU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCiBTT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCiAKLSQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpCiskKExJQik6CSQoT0JKUykgJChTT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKIAogY2xlYW46CmRpZmYgLS1naXQgYS9ib2FyZC90cml6ZXBzaXYvcHhhdm9sdGFnZS5TIGIvYm9hcmQvZ2RzeXMvY29tbW9uL2ZwZ2EuaApzaW1pbGFyaXR5IGluZGV4IDY5JQpjb3B5IGZyb20gYm9hcmQvdHJpemVwc2l2L3B4YXZvbHRhZ2UuUwpjb3B5IHRvIGJvYXJkL2dkc3lzL2NvbW1vbi9mcGdhLmgKaW5kZXggOTY1OWMyYi4uYzE0MzRlNyAxMDA2NDQKLS0tIGEvYm9hcmQvdHJpemVwc2l2L3B4YXZvbHRhZ2UuUworKysgYi9ib2FyZC9nZHN5cy9jb21tb24vZnBnYS5oCkBAIC0xLDYgKzEsNiBAQAogLyoKLSAqIChDKSBDb3B5cmlnaHQgMjAwNwotICogU3RlZmFubyBCYWJpYywgREVOWCBHbWJoLCBzYmFiaWNAZGVueC5kZQorICogKEMpIENvcHlyaWdodCAyMDEwCisgKiBEaXJrIEVpYmFjaCwgIEd1bnRlcm1hbm4gJiBEcnVuY2sgR21iSCwgZWliYWNoQGdkc3lzLmRlCiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0yMSw5ICsyMSwxNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0jaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KKyNpZm5kZWYgX0ZQR0FfSF8KKyNkZWZpbmUgX0ZQR0FfSF8KIAotCQkuZ2xvYmFsCWluaXRQWEF2b2x0YWdlCitzdGF0aWMgaW5saW5lIHUxNiBmcGdhX2dldF9yZWcodW5zaWduZWQgcmVnKQoreworCXJldHVybiBpbl9sZTE2KCh2b2lkICopKENPTkZJR19TWVNfRlBHQV9CQVNFICsgcmVnKSk7Cit9CiAKLWluaXRQWEF2b2x0YWdlOgotCQltb3YJcGMsIGxyCitzdGF0aWMgaW5saW5lIHZvaWQgZnBnYV9zZXRfcmVnKHVuc2lnbmVkIHJlZywgdTE2IHZhbCkKK3sKKwlyZXR1cm4gb3V0X2xlMTYoKHZvaWQgKikoQ09ORklHX1NZU19GUEdBX0JBU0UgKyByZWcpLCB2YWwpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL2dkc3lzL2NvbW1vbi9taWlwaHliYi5jIGIvYm9hcmQvZ2RzeXMvY29tbW9uL21paXBoeWJiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU2ZTk2NgotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2dkc3lzL2NvbW1vbi9taWlwaHliYi5jCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDEwCisgKiBEaXJrIEVpYmFjaCwgIEd1bnRlcm1hbm4gJiBEcnVuY2sgR21iSCwgZWliYWNoQGdkc3lzLmRlCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPG1paXBoeS5oPgorCisjaW5jbHVkZSA8YXNtL2lvLmg+CisKK3N0YXRpYyBpbnQgaW9fYmJfbWlpX2luaXQoc3RydWN0IGJiX21paXBoeV9idXMgKmJ1cykKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpb19iYl9tZGlvX2FjdGl2ZShzdHJ1Y3QgYmJfbWlpcGh5X2J1cyAqYnVzKQoreworCW91dF9iZTMyKCh2b2lkICopR1BJTzBfVENSLAorCQlpbl9iZTMyKCh2b2lkICopR1BJTzBfVENSKSB8IENPTkZJR19TWVNfTURJT19QSU4pOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaW9fYmJfbWRpb190cmlzdGF0ZShzdHJ1Y3QgYmJfbWlpcGh5X2J1cyAqYnVzKQoreworCW91dF9iZTMyKCh2b2lkICopR1BJTzBfVENSLAorCQlpbl9iZTMyKCh2b2lkICopR1BJTzBfVENSKSAmIH5DT05GSUdfU1lTX01ESU9fUElOKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlvX2JiX3NldF9tZGlvKHN0cnVjdCBiYl9taWlwaHlfYnVzICpidXMsIGludCB2KQoreworCWlmICh2KQorCQlvdXRfYmUzMigodm9pZCAqKUdQSU8wX09SLAorCQkJaW5fYmUzMigodm9pZCAqKUdQSU8wX09SKSB8IENPTkZJR19TWVNfTURJT19QSU4pOworCWVsc2UKKwkJb3V0X2JlMzIoKHZvaWQgKilHUElPMF9PUiwKKwkJCWluX2JlMzIoKHZvaWQgKilHUElPMF9PUikgJiB+Q09ORklHX1NZU19NRElPX1BJTik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpb19iYl9nZXRfbWRpbyhzdHJ1Y3QgYmJfbWlpcGh5X2J1cyAqYnVzLCBpbnQgKnYpCit7CisJKnYgPSAoKGluX2JlMzIoKHZvaWQgKilHUElPMF9JUikgJiBDT05GSUdfU1lTX01ESU9fUElOKSAhPSAwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlvX2JiX3NldF9tZGMoc3RydWN0IGJiX21paXBoeV9idXMgKmJ1cywgaW50IHYpCit7CisJaWYgKHYpCisJCW91dF9iZTMyKCh2b2lkICopR1BJTzBfT1IsCisJCQlpbl9iZTMyKCh2b2lkICopR1BJTzBfT1IpIHwgQ09ORklHX1NZU19NRENfUElOKTsKKwllbHNlCisJCW91dF9iZTMyKCh2b2lkICopR1BJTzBfT1IsCisJCQlpbl9iZTMyKCh2b2lkICopR1BJTzBfT1IpICYgfkNPTkZJR19TWVNfTURDX1BJTik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpb19iYl9kZWxheShzdHJ1Y3QgYmJfbWlpcGh5X2J1cyAqYnVzKQoreworCXVkZWxheSgxKTsKKworCXJldHVybiAwOworfQorCitzdHJ1Y3QgYmJfbWlpcGh5X2J1cyBiYl9taWlwaHlfYnVzZXNbXSA9IHsKKwl7CisJCS5uYW1lID0gQ09ORklHX1NZU19HQklUX01JSV9CVVNOQU1FLAorCQkuaW5pdCA9IGlvX2JiX21paV9pbml0LAorCQkubWRpb19hY3RpdmUgPSBpb19iYl9tZGlvX2FjdGl2ZSwKKwkJLm1kaW9fdHJpc3RhdGUgPSBpb19iYl9tZGlvX3RyaXN0YXRlLAorCQkuc2V0X21kaW8gPSBpb19iYl9zZXRfbWRpbywKKwkJLmdldF9tZGlvID0gaW9fYmJfZ2V0X21kaW8sCisJCS5zZXRfbWRjID0gaW9fYmJfc2V0X21kYywKKwkJLmRlbGF5ID0gaW9fYmJfZGVsYXksCisJfQorfTsKKworaW50IGJiX21paXBoeV9idXNlc19udW0gPSBzaXplb2YoYmJfbWlpcGh5X2J1c2VzKSAvCisJCQkgIHNpemVvZihiYl9taWlwaHlfYnVzZXNbMF0pOwpkaWZmIC0tZ2l0IGEvYm9hcmQvZ2RzeXMvY29tbW9uL29zZC5jIGIvYm9hcmQvZ2RzeXMvY29tbW9uL29zZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ODAwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9nZHN5cy9jb21tb24vb3NkLmMKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMTAKKyAqIERpcmsgRWliYWNoLCAgR3VudGVybWFubiAmIERydW5jayBHbWJILCBlaWJhY2hAZ2RzeXMuZGUKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8aTJjLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKKyNpbmNsdWRlICJmcGdhLmgiCisKKyNkZWZpbmUgQ0g3MzAxX0kyQ19BRERSIDB4NzUKKworI2RlZmluZSBQSVhDTEtfNjQwXzQ4MF82MCAyNTE4MDAwMAorCisjZGVmaW5lIEJBU0VfV0lEVEggMzIKKyNkZWZpbmUgQkFTRV9IRUlHSFQgMTYKKyNkZWZpbmUgQlVGU0laRSAoQkFTRV9XSURUSCAqIEJBU0VfSEVJR0hUKQorCitlbnVtIHsKKwlSRUdfQ09OVFJPTCA9IDB4MDAxMCwKKwlSRUdfTVBDM1dfQ09OVFJPTCA9IDB4MDAxYSwKKwlSRUdfVklERU9DT05UUk9MID0gMHgwMDQyLAorCVJFR19PU0RWRVJTSU9OID0gMHgwMTAwLAorCVJFR19PU0RGRUFUVVJFUyA9IDB4MDEwMiwKKwlSRUdfT1NEQ09OVFJPTCA9IDB4MDEwNCwKKwlSRUdfWFlfU0laRSA9IDB4MDEwNiwKKwlSRUdfVklERU9NRU0gPSAweDA4MDAsCit9OworCitlbnVtIHsKKwlDSDczMDFfQ00gPSAweDFjLAkJLyogQ2xvY2sgTW9kZSBSZWdpc3RlciAqLworCUNINzMwMV9JQyA9IDB4MWQsCQkvKiBJbnB1dCBDbG9jayBSZWdpc3RlciAqLworCUNINzMwMV9HUElPID0gMHgxZSwJCS8qIEdQSU8gQ29udHJvbCBSZWdpc3RlciAqLworCUNINzMwMV9JREYgPSAweDFmLAkJLyogSW5wdXQgRGF0YSBGb3JtYXQgUmVnaXN0ZXIgKi8KKwlDSDczMDFfQ0QgPSAweDIwLAkJLyogQ29ubmVjdGlvbiBEZXRlY3QgUmVnaXN0ZXIgKi8KKwlDSDczMDFfREMgPSAweDIxLAkJLyogREFDIENvbnRyb2wgUmVnaXN0ZXIgKi8KKwlDSDczMDFfSFBEID0gMHgyMywJCS8qIEhvdCBQbHVnIERldGVjdGlvbiBSZWdpc3RlciAqLworCUNINzMwMV9UQ1RMID0gMHgzMSwJCS8qIERWSSBDb250cm9sIElucHV0IFJlZ2lzdGVyICovCisJQ0g3MzAxX1RQQ1AgPSAweDMzLAkJLyogRFZJIFBMTCBDaGFyZ2UgUHVtcCBDdHJsIFJlZ2lzdGVyICovCisJQ0g3MzAxX1RQRCA9IDB4MzQsCQkvKiBEVkkgUExMIERpdmlkZSBSZWdpc3RlciAqLworCUNINzMwMV9UUFZUID0gMHgzNSwJCS8qIERWSSBQTEwgU3VwcGx5IENvbnRyb2wgUmVnaXN0ZXIgKi8KKwlDSDczMDFfVFBGID0gMHgzNiwJCS8qIERWSSBQTEwgRmlsdGVyIFJlZ2lzdGVyICovCisJQ0g3MzAxX1RDVCA9IDB4MzcsCQkvKiBEVkkgQ2xvY2sgVGVzdCBSZWdpc3RlciAqLworCUNINzMwMV9UU1RQID0gMHg0OCwJCS8qIFRlc3QgUGF0dGVybiBSZWdpc3RlciAqLworCUNINzMwMV9QTSA9IDB4NDksCQkvKiBQb3dlciBNYW5hZ2VtZW50IHJlZ2lzdGVyICovCisJQ0g3MzAxX1ZJRCA9IDB4NGEsCQkvKiBWZXJzaW9uIElEIFJlZ2lzdGVyICovCisJQ0g3MzAxX0RJRCA9IDB4NGIsCQkvKiBEZXZpY2UgSUQgUmVnaXN0ZXIgKi8KKwlDSDczMDFfRFNQID0gMHg1NiwJCS8qIERWSSBTeW5jIHBvbGFyaXR5IFJlZ2lzdGVyICovCit9OworCitzdGF0aWMgdm9pZCBtcGM5MjQ2OWFjX2NhbGNfcGFyYW1ldGVycyh1bnNpZ25lZCBpbnQgZm91dCwKKwl1bnNpZ25lZCBpbnQgKnBvc3RfZGl2LCB1bnNpZ25lZCBpbnQgKmZlZWRiYWNrX2RpdikKK3sKKwl1bnNpZ25lZCBpbnQgbiA9ICpwb3N0X2RpdjsKKwl1bnNpZ25lZCBpbnQgbSA9ICpmZWVkYmFja19kaXY7CisJdW5zaWduZWQgaW50IGE7CisJdW5zaWduZWQgaW50IGIgPSAxNDc0NTYwMCAvIDE2OworCisJaWYgKGZvdXQgPCA1MDE2OTYwMCkKKwkJbiA9IDg7CisJZWxzZSBpZiAoZm91dCA8IDEwMDMzOTE5OSkKKwkJbiA9IDQ7CisJZWxzZSBpZiAoZm91dCA8IDIwMDY3ODM5OSkKKwkJbiA9IDI7CisJZWxzZQorCQluID0gMTsKKworCWEgPSBmb3V0ICogbiArIChiIC8gMik7IC8qIGFkZCBiLzIgZm9yIHByb3BlciByb3VuZGluZyAqLworCisJbSA9IGEgLyBiOworCisJKnBvc3RfZGl2ID0gbjsKKwkqZmVlZGJhY2tfZGl2ID0gbTsKK30KKworc3RhdGljIHZvaWQgbXBjOTI0NjlhY19zZXQodW5zaWduZWQgaW50IGZvdXQpCit7CisJdW5zaWduZWQgaW50IG47CisJdW5zaWduZWQgaW50IG07CisJdW5zaWduZWQgaW50IGJpdHZhbCA9IDA7CisJbXBjOTI0NjlhY19jYWxjX3BhcmFtZXRlcnMoZm91dCwgJm4sICZtKTsKKworCXN3aXRjaCAobikgeworCWNhc2UgMToKKwkJYml0dmFsID0gMHgwMDsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQliaXR2YWwgPSAweDAxOworCQlicmVhazsKKwljYXNlIDQ6CisJCWJpdHZhbCA9IDB4MDI7CisJCWJyZWFrOworCWNhc2UgODoKKwkJYml0dmFsID0gMHgwMzsKKwkJYnJlYWs7CisJfQorCisJZnBnYV9zZXRfcmVnKFJFR19NUEMzV19DT05UUk9MLCAoYml0dmFsIDw8IDkpIHwgbSk7Cit9CisKK3N0YXRpYyBpbnQgb3NkX3dyaXRlX3ZpZGVvbWVtKHVuc2lnbmVkIG9mZnNldCwgdTE2ICpkYXRhLCBzaXplX3QgY2hhcmNvdW50KQoreworCXVuc2lnbmVkIGludCBrOworCisJZm9yIChrID0gMDsgayA8IGNoYXJjb3VudDsgKytrKSB7CisJCWlmIChvZmZzZXQgKyBrID49IEJVRlNJWkUpCisJCQlyZXR1cm4gLTE7CisJCWZwZ2Ffc2V0X3JlZyhSRUdfVklERU9NRU0gKyAyICogKG9mZnNldCArIGspLCBkYXRhW2tdKTsKKwl9CisKKwlyZXR1cm4gY2hhcmNvdW50OworfQorCitzdGF0aWMgaW50IG9zZF9wcmludChjbWRfdGJsX3QgKmNtZHRwLCBpbnQgZmxhZywgaW50IGFyZ2MsIGNoYXIgKiBjb25zdCBhcmd2W10pCit7CisJdW5zaWduZWQgeDsKKwl1bnNpZ25lZCB5OworCXVuc2lnbmVkIGNoYXJjb3VudDsKKwl1bnNpZ25lZCBsZW47CisJdTggY29sb3I7CisJdW5zaWduZWQgaW50IGs7CisJdTE2IGJ1ZltCVUZTSVpFXTsKKwljaGFyICp0ZXh0OworCisJaWYgKGFyZ2MgPCA1KSB7CisJCWNtZF91c2FnZShjbWR0cCk7CisJCXJldHVybiAxOworCX0KKworCXggPSBzaW1wbGVfc3RydG91bChhcmd2WzFdLCBOVUxMLCAxNik7CisJeSA9IHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMl0sIE5VTEwsIDE2KTsKKwljb2xvciA9IHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbM10sIE5VTEwsIDE2KTsKKwl0ZXh0ID0gYXJndls0XTsKKwljaGFyY291bnQgPSBzdHJsZW4odGV4dCk7CisJbGVuID0gKGNoYXJjb3VudCA+IEJVRlNJWkUpID8gQlVGU0laRSA6IGNoYXJjb3VudDsKKworCWZvciAoayA9IDA7IGsgPCBsZW47ICsraykKKwkJYnVmW2tdID0gKHRleHRba10gPDwgOCkgfCBjb2xvcjsKKworCXJldHVybiBvc2Rfd3JpdGVfdmlkZW9tZW0oeSAqIEJBU0VfV0lEVEggKyB4LCBidWYsIGxlbik7Cit9CisKK2ludCBvc2RfcHJvYmUodm9pZCkKK3sKKwl1OCB2YWx1ZTsKKwl1MTYgdmVyc2lvbiA9IGZwZ2FfZ2V0X3JlZyhSRUdfT1NEVkVSU0lPTik7CisJdTE2IGZlYXR1cmVzID0gZnBnYV9nZXRfcmVnKFJFR19PU0RGRUFUVVJFUyk7CisJdW5zaWduZWQgd2lkdGg7CisJdW5zaWduZWQgaGVpZ2h0OworCisJd2lkdGggPSAoKGZlYXR1cmVzICYgMHgzZjAwKSA+PiA4KSArIDE7CisJaGVpZ2h0ID0gKGZlYXR1cmVzICYgMHgwMDFmKSArIDE7CisKKwlwcmludGYoIk9TRDogICBEaWdpdGFsLU9TRCB2ZXJzaW9uICUwMWQuJTAyZCwgJWQiICJ4JWQgY2hhcmFjdGVyc1xuIiwKKwkJdmVyc2lvbi8xMDAsIHZlcnNpb24lMTAwLCB3aWR0aCwgaGVpZ2h0KTsKKworCXZhbHVlID0gaTJjX3JlZ19yZWFkKENINzMwMV9JMkNfQUREUiwgQ0g3MzAxX0RJRCk7CisJaWYgKHZhbHVlICE9IDB4MTcpIHsKKwkJcHJpbnRmKCIgICAgICAgUHJvYmluZyBDSDczMDEgZmFpbGVkLCBESUQgJTAyeFxuIiwgdmFsdWUpOworCQlyZXR1cm4gLTE7CisJfQorCWkyY19yZWdfd3JpdGUoQ0g3MzAxX0kyQ19BRERSLCBDSDczMDFfVFBDUCwgMHgwOCk7CisJaTJjX3JlZ193cml0ZShDSDczMDFfSTJDX0FERFIsIENINzMwMV9UUEQsIDB4MTYpOworCWkyY19yZWdfd3JpdGUoQ0g3MzAxX0kyQ19BRERSLCBDSDczMDFfVFBGLCAweDYwKTsKKwlpMmNfcmVnX3dyaXRlKENINzMwMV9JMkNfQUREUiwgQ0g3MzAxX0RDLCAweDA5KTsKKwlpMmNfcmVnX3dyaXRlKENINzMwMV9JMkNfQUREUiwgQ0g3MzAxX1BNLCAweGMwKTsKKworCW1wYzkyNDY5YWNfc2V0KFBJWENMS182NDBfNDgwXzYwKTsKKwlmcGdhX3NldF9yZWcoUkVHX1ZJREVPQ09OVFJPTCwgMHgwMDAyKTsKKwlmcGdhX3NldF9yZWcoUkVHX09TRENPTlRST0wsIDB4MDA0OSk7CisKKwlmcGdhX3NldF9yZWcoUkVHX1hZX1NJWkUsICgoMzIgLSAxKSA8PCA4KSB8ICgxNiAtIDEpKTsKKworCXJldHVybiAwOworfQorCitpbnQgb3NkX3dyaXRlKGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqIGNvbnN0IGFyZ3ZbXSkKK3sKKwl1bnNpZ25lZCB4OworCXVuc2lnbmVkIHk7CisJdW5zaWduZWQgazsKKwl1MTYgYnVmZmVyW0JBU0VfV0lEVEhdOworCWNoYXIgKnJwOworCXUxNiAqd3AgPSBidWZmZXI7CisJdW5zaWduZWQgY291bnQgPSAoYXJnYyA+IDQpID8gIHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbNF0sIE5VTEwsIDE2KSA6IDE7CisKKwlpZiAoKGFyZ2MgPCA0KSB8fCAoc3RybGVuKGFyZ3ZbM10pICUgNCkpIHsKKwkJY21kX3VzYWdlKGNtZHRwKTsKKwkJcmV0dXJuIDE7CisJfQorCisJeCA9IHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMV0sIE5VTEwsIDE2KTsKKwl5ID0gc2ltcGxlX3N0cnRvdWwoYXJndlsyXSwgTlVMTCwgMTYpOworCXJwID0gYXJndlszXTsKKworCisJd2hpbGUgKCpycCkgeworCQljaGFyIHN1YnN0cls1XTsKKworCQltZW1jcHkoc3Vic3RyLCBycCwgNCk7CisJCXN1YnN0cls0XSA9IDA7CisJCSp3cCA9IHNpbXBsZV9zdHJ0b3VsKHN1YnN0ciwgTlVMTCwgMTYpOworCisJCXJwICs9IDQ7CisJCXdwKys7CisJCWlmICh3cCAtIGJ1ZmZlciA+IEJBU0VfV0lEVEgpCisJCQlicmVhazsKKwl9CisKKwlmb3IgKGsgPSAwOyBrIDwgY291bnQ7ICsraykgeworCQl1bnNpZ25lZCBvZmZzZXQgPSB5ICogQkFTRV9XSURUSCArIHggKyBrICogKHdwIC0gYnVmZmVyKTsKKwkJb3NkX3dyaXRlX3ZpZGVvbWVtKG9mZnNldCwgYnVmZmVyLCB3cCAtIGJ1ZmZlcik7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK1VfQk9PVF9DTUQoCisJb3NkdywgNSwgMCwgb3NkX3dyaXRlLAorCSJ3cml0ZSAxNi1iaXQgaGV4IGVuY29kZWQgYnVmZmVyIHRvIG9zZCBtZW1vcnkiLAorCSJwb3NfeCBwb3NfeSBidWZmZXIgY291bnRcbiIKKyk7CisKK1VfQk9PVF9DTUQoCisJb3NkcCwgNSwgMCwgb3NkX3ByaW50LAorCSJ3cml0ZSBBU0NJSSBidWZmZXIgdG8gb3NkIG1lbW9yeSIsCisJInBvc194IHBvc195IGNvbG9yIHRleHRcbiIKKyk7CmRpZmYgLS1naXQgYS9ib2FyZC90cml6ZXBzaXYvcHhhdm9sdGFnZS5TIGIvYm9hcmQvZ2RzeXMvY29tbW9uL29zZC5oCnNpbWlsYXJpdHkgaW5kZXggODMlCnJlbmFtZSBmcm9tIGJvYXJkL3RyaXplcHNpdi9weGF2b2x0YWdlLlMKcmVuYW1lIHRvIGJvYXJkL2dkc3lzL2NvbW1vbi9vc2QuaAppbmRleCA5NjU5YzJiLi40NDMxY2JjIDEwMDY0NAotLS0gYS9ib2FyZC90cml6ZXBzaXYvcHhhdm9sdGFnZS5TCisrKyBiL2JvYXJkL2dkc3lzL2NvbW1vbi9vc2QuaApAQCAtMSw2ICsxLDYgQEAKIC8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDcKLSAqIFN0ZWZhbm8gQmFiaWMsIERFTlggR21iaCwgc2JhYmljQGRlbnguZGUKKyAqIChDKSBDb3B5cmlnaHQgMjAxMAorICogRGlyayBFaWJhY2gsICBHdW50ZXJtYW5uICYgRHJ1bmNrIEdtYkgsIGVpYmFjaEBnZHN5cy5kZQogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtMjEsOSArMjEsOSBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0jaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KKyNpZm5kZWYgX09TRF9IXworI2RlZmluZSBfT1NEX0hfCiAKLQkJLmdsb2JhbAlpbml0UFhBdm9sdGFnZQoraW50IG9zZF9wcm9iZSh2b2lkKTsKIAotaW5pdFBYQXZvbHRhZ2U6Ci0JCW1vdglwYywgbHIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYm9hcmQvZ2RzeXMvZ2RwcGM0NDBldHgvaW5pdC5TIGIvYm9hcmQvZ2RzeXMvZ2RwcGM0NDBldHgvaW5pdC5TCmluZGV4IGJhNzUwY2IuLjRhNDBlNGIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2dkc3lzL2dkcHBjNDQwZXR4L2luaXQuUworKysgYi9ib2FyZC9nZHN5cy9nZHBwYzQ0MGV0eC9pbml0LlMKQEAgLTI0LDYgKzI0LDcgQEAKICogTUEgMDIxMTEtMTMwNyBVU0EKICovCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPHBwY19hc20udG1wbD4KICNpbmNsdWRlIDxjb25maWcuaD4KIApkaWZmIC0tZ2l0IGEvYm9hcmQvZ2RzeXMvaW50aXAvaW5pdC5TIGIvYm9hcmQvZ2RzeXMvaW50aXAvaW5pdC5TCmluZGV4IDVhODE5YzIuLjc1MTNmMWQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2dkc3lzL2ludGlwL2luaXQuUworKysgYi9ib2FyZC9nZHN5cy9pbnRpcC9pbml0LlMKQEAgLTI1LDYgKzI1LDcgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8cHBjX2FzbS50bXBsPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPGFzbS9tbXUuaD4KZGlmZiAtLWdpdCBhL2JvYXJkL2hpZGRlbl9kcmFnb24vZWFybHlfaW5pdC5TIGIvYm9hcmQvaGlkZGVuX2RyYWdvbi9lYXJseV9pbml0LlMKaW5kZXggNTMxZGNkZi4uNjFiNGI1NSAxMDA2NDQKLS0tIGEvYm9hcmQvaGlkZGVuX2RyYWdvbi9lYXJseV9pbml0LlMKKysrIGIvYm9hcmQvaGlkZGVuX2RyYWdvbi9lYXJseV9pbml0LlMKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZpbmUgX19BU1NFTUJMWV9fCTEKICNlbmRpZgogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8bXBjODI0eC5oPgpkaWZmIC0tZ2l0IGEvYm9hcmQvaWNlY3ViZS9pY2VjdWJlLmMgYi9ib2FyZC9pY2VjdWJlL2ljZWN1YmUuYwppbmRleCA0N2IyMTk1Li5hOWU0NDQ4IDEwMDY0NAotLS0gYS9ib2FyZC9pY2VjdWJlL2ljZWN1YmUuYworKysgYi9ib2FyZC9pY2VjdWJlL2ljZWN1YmUuYwpAQCAtODAsNyArODAsNyBAQAogCS8qIGp1bXAgYmFjayB0byBsaW51eCBrZXJuZWwgY29kZSAqLwogCWxpbnV4X3dha2V1cCA9IFNBVkVEX0FERFI7CiAJcHJpbnRmKCJcblxuTG9va3MgbGlrZSB3ZSBqdXN0IHdva2UsIHRyYW5zZmVycmluZyBjb250cm9sIHRvIDB4JTA4bHhcbiIsCi0JCQlsaW51eF93YWtldXApOworCQkJKHVuc2lnbmVkIGxvbmcpbGludXhfd2FrZXVwKTsKIAlsaW51eF93YWtldXAoKTsKIH0KICNlbHNlCmRpZmYgLS1naXQgYS9ib2FyZC9pbm5va29tL01ha2VmaWxlIGIvYm9hcmQvaW5ub2tvbS9NYWtlZmlsZQppbmRleCBhZmFlMjE3Li5iYTI0OGMwIDEwMDY0NAotLS0gYS9ib2FyZC9pbm5va29tL01ha2VmaWxlCisrKyBiL2JvYXJkL2lubm9rb20vTWFrZWZpbGUKQEAgLTI2LDE3ICsyNiwxNSBAQAogTElCCT0gJChvYmopbGliJChCT0FSRCkuYQogCiBDT0JKUwk6PSBpbm5va29tLm8gZmxhc2gubwotU09CSlMJOj0gbG93bGV2ZWxfaW5pdC5vCiAKLVNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKK1NSQ1MJOj0gJChDT0JKUzoubz0uYykKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQotU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQogCi0kKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKQotCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKSAkKFNPQkpTKQorJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykKKwkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykKIAogY2xlYW46Ci0Jcm0gLWYgJChTT0JKUykgJChPQkpTKQorCXJtIC1mICQoT0JKUykKIAogZGlzdGNsZWFuOgljbGVhbgogCXJtIC1mICQoTElCKSBjb3JlICouYmFrICQob2JqKS5kZXBlbmQKZGlmZiAtLWdpdCBhL2JvYXJkL2lubm9rb20vY29uZmlnLm1rIGIvYm9hcmQvaW5ub2tvbS9jb25maWcubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNDY1NTUuLjAwMDAwMDAKLS0tIGEvYm9hcmQvaW5ub2tvbS9jb25maWcubWsKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0jCi0jIExpbnV4LUtlcm5lbCBpcyBleHBlY3RlZCB0byBiZSBhdCBjMDAwJzgwMDAsIGVudHJ5IGMwMDAnODAwMAotIwotIyB3ZSBsb2FkIG91cnNlbGYgdG8gYzE3MCcwMDAwLCB0aGUgdXBwZXIgMSBNQiBvZiBzZWNvbmQgYmFuawotIwotIyBkb3dubG9hZCBhcmVhcyBpcyBjODAwJzAwMDAKLSMKLQotIyBUaGlzIGlzIHRoZSBhZGRyZXNzIHdoZXJlIFUtQm9vdCBsaXZlcyBpbiBmbGFzaDoKLSNDT05GSUdfU1lTX1RFWFRfQkFTRSA9IDAKLQotIyBGSVhNRTogYXJtYm9vdCBkb2VzIG9ubHkgd29yayBjb3JyZWN0bHkgd2hlbiBiZWluZyBjb21waWxlZAotIyBmb3IgdGhlIGFkZHJlc3NlcyBfYWZ0ZXJfIHJlbG9jYXRpb24gdG8gUkFNISEgT3RoZXJ3aGlzZSB0aGUKLSMgLmJzcyBzZWdtZW50IGlzIGFzc3VtZWQgaW4gZmxhc2guLi4KLUNPTkZJR19TWVNfVEVYVF9CQVNFID0gMHhhMWZlMDAwMApkaWZmIC0tZ2l0IGEvYm9hcmQvaW5ub2tvbS9pbm5va29tLmMgYi9ib2FyZC9pbm5va29tL2lubm9rb20uYwppbmRleCAyYzUxMTI1Li5lNjU4YzM1IDEwMDY0NAotLS0gYS9ib2FyZC9pbm5va29tL2lubm9rb20uYworKysgYi9ib2FyZC9pbm5va29tL2lubm9rb20uYwpAQCAtMTAwLDggKzEwMCw5IEBACiAKIGludCBib2FyZF9pbml0ICh2b2lkKQogewotCS8qIG1lbW9yeSBhbmQgY3B1LXNwZWVkIGFyZSBzZXR1cCBiZWZvcmUgcmVsb2NhdGlvbiAqLwotCS8qIHNvIHdlIGRvIF9ub3RoaW5nXyBoZXJlICovCisJLyogV2UgaGF2ZSBSQU0sIGRpc2FibGUgY2FjaGUgKi8KKwlkY2FjaGVfZGlzYWJsZSgpOworCWljYWNoZV9kaXNhYmxlKCk7CiAKIAlnZC0+YmQtPmJpX2FyY2hfbnVtYmVyID0gTUFDSF9UWVBFX0lOTk9LT007CiAJZ2QtPmJkLT5iaV9ib290X3BhcmFtcyA9IDB4YTAwMDAxMDA7CkBAIC0xMTAsMjEgKzExMSwxOSBAQAogCXJldHVybiAwOwogfQogCi0KLS8qKgotICogZHJhbV9pbml0OiAtIHNldHVwIGR5bmFtaWMgUkFNCi0gKgotICogQHJldHVybjogMCBpbiBjYXNlIG9mIHN1Y2Nlc3MKLSAqLwotCi1pbnQgZHJhbV9pbml0ICh2b2lkKQorZXh0ZXJuIHZvaWQgcHhhX2RyYW1faW5pdCh2b2lkKTsKK2ludCBkcmFtX2luaXQodm9pZCkKIHsKLQlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBQSFlTX1NEUkFNXzE7Ci0JZ2QtPmJkLT5iaV9kcmFtWzBdLnNpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKLQorCXB4YV9kcmFtX2luaXQoKTsKKwlnZC0+cmFtX3NpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKIAlyZXR1cm4gMDsKIH0KIAordm9pZCBkcmFtX2luaXRfYmFua3NpemUodm9pZCkKK3sKKwlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBQSFlTX1NEUkFNXzE7CisJZ2QtPmJkLT5iaV9kcmFtWzBdLnNpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKK30KIAogLyoqCiAgKiBpbm5va29tX3NldF9sZWQ6IC0gc3dpdGNoIExFRHMgb24gb3Igb2ZmCmRpZmYgLS1naXQgYS9ib2FyZC9pbm5va29tL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL2lubm9rb20vbG93bGV2ZWxfaW5pdC5TCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTE2OWJlLi4wMDAwMDAwCi0tLSBhL2JvYXJkL2lubm9rb20vbG93bGV2ZWxfaW5pdC5TCisrKyAvZGV2L251bGwKQEAgLTEsNDM3ICswLDAgQEAKLS8qCi0gKiBNb3N0IG9mIHRoaXMgdGFrZW4gZnJvbSBSZWRib290IGhhbF9wbGF0Zm9ybV9zZXR1cC5oIHdpdGggY2xlYW51cAotICoKLSAqIE5PVEU6IEkgaGF2ZW4ndCBjbGVhbiB0aGlzIHVwIGNvbnNpZGVyYWJseSwganVzdCBlbm91Z2ggdG8gZ2V0IGl0Ci0gKiBydW5uaW5nLiBTZWUgaGFsX3BsYXRmb3JtX3NldHVwLmggZm9yIHRoZSBzb3VyY2UuIFNlZQotICogYm9hcmQvY3JhZGxlL2xvd2xldmVsX2luaXQuUyBmb3IgYW5vdGhlciBQWEEyNTAgc2V0dXAgdGhhdCBpcwotICogbXVjaCBjbGVhbmVyLgotICoKLSAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCi0gKiBwcm9qZWN0LgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCi0gKiBNQSAwMjExMS0xMzA3IFVTQQotICovCi0KLSNpbmNsdWRlIDxjb25maWcuaD4KLSNpbmNsdWRlIDx2ZXJzaW9uLmg+Ci0jaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KLQotRFJBTV9TSVpFOiAgLmxvbmcgICBDT05GSUdfU1lTX0RSQU1fU0laRQotCi0vKiB3YWl0IGZvciBjb3Byb2Nlc3NvciB3cml0ZSBjb21wbGV0ZSAqLwotICAgLm1hY3JvIENQV0FJVCByZWcKLSAgIG1yYyAgcDE1LDAsXHJlZyxjMixjMCwwCi0gICBtb3YgIFxyZWcsXHJlZwotICAgc3ViICBwYyxwYywjNAotICAgLmVuZG0KLQotX1RFWFRfQkFTRToKLQkud29yZAlDT05GSUdfU1lTX1RFWFRfQkFTRQotCi0KLS8qCi0gKglNZW1vcnkgc2V0dXAKLSAqLwotCi0uZ2xvYmwgbG93bGV2ZWxfaW5pdAotbG93bGV2ZWxfaW5pdDoKLQotICAgIG1vdiAgICAgIHIxMCwgbHIKLQotCS8qIFNldCB1cCBHUElPIHBpbnMgZmlyc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCWxkcgkJcjAsCT1HUFNSMAotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQU1IwX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQU1IxCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BTUjFfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BTUjIKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUFNSMl9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUENSMAotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQQ1IwX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQQ1IxCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BDUjFfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BDUjIKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUENSMl9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUERSMAotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQRFIwX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQRFIxCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BEUjFfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BEUjIKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUERSMl9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMF9MCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjBfTF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMF9VCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjBfVV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMV9MCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjFfTF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMV9VCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjFfVV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMl9MCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjJfTF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMl9VCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjJfVV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcglyMCwJPVBTU1IJCS8qIGVuYWJsZSBHUElPIHBpbnMgKi8KLQlsZHIJCXIxLAk9Q09ORklHX1NZU19QU1NSX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0vKglsZHIJcjMsCT1NU0MxCQkvICBsb3cgLSBiYW5rIDIgTHViYm9jayBSZWdpc3RlcnMgLyBTUkFNICovCi0vKglsZHIJcjIsCT1DT05GSUdfU1lTX01TQzFfVkFMCS8gIGhpZ2ggLSBiYW5rIDMgRXRoZXJuZXQgQ29udHJvbGxlciAqLwotLyoJc3RyCXIyLAlbcjNdCQkvICBuZWVkIHRvIHNldCBNU0MxIGJlZm9yZSB0cnlpbmcgdG8gd3JpdGUgdG8gdGhlIEhFWCBMRURzICovCi0vKglsZHIJcjIsCVtyM10JCS8gIG5lZWQgdG8gcmVhZCBpdCBiYWNrIHRvIG1ha2Ugc3VyZSB0aGUgdmFsdWUgbGF0Y2hlcyAoc2VlIE1TQyBzZWN0aW9uIG9mIG1hbnVhbCkgKi8KLS8qICovCi0vKglsZHIJcjEsCT1MRURfQkxBTksgKi8KLS8qCW1vdglyMCwJIzB4RkYgKi8KLS8qCXN0cglyMCwJW3IxXQkJLyAgdHVybiBvbiBoZXggbGVkcyAqLwotLyogKi8KLS8qbG9vcDogKi8KLS8qICovCi0vKiAgIGxkcglyMCwgPTB4QjAwNzAwMDEgKi8KLS8qICAgbGRyCXIxLCA9X0xFRCAqLwotLyogICBzdHIJcjAsIFtyMV0JCS8gIGhleCBkaXNwbGF5ICovCi0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBFbmFibGUgbWVtb3J5IGludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIFRoZSBzZXF1ZW5jZSBiZWxvdyBpcyBiYXNlZCBvbiB0aGUgcmVjb21tZW5kZWQgaW5pdCBzdGVwcyAgICAgICAgKi8KLQkvKiBkZXRhaWxlZCBpbiB0aGUgSW50ZWwgUFhBMjUwIE9wZXJhdGluZyBTeXN0ZW1zIERldmVsb3BlcnMgR3VpZGUsICovCi0JLyogQ2hhcHRlciAxMC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDE6IFdhaXQgZm9yIGF0IGxlYXN0IDIwMCBtaWNyb3NlZG9uZHMgdG8gYWxsb3cgaW50ZXJuYWwgICAgICovCi0JLyogICAgICAgICBjbG9ja3MgdG8gc2V0dGxlLiBPbmx5IG5lY2Vzc2FyeSBhZnRlciBoYXJkIHJlc2V0Li4uICAgICAqLwotCS8qICAgICAgICAgRklYTUU6IGNhbiBiZSBvcHRpbWl6ZWQgbGF0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQlsZHIgcjMsID1PU0NSCQkJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KLQltb3YgcjIsICMwCi0Jc3RyIHIyLCBbcjNdCi0JbGRyIHI0LCA9MHgzMDAJCQkvKiByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgICAqLwotCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICAgICAgICAqLwotMToKLQlsZHIgcjIsIFtyM10KLQljbXAgcjQsIHIyCi0JYmd0IDFiCi0KLW1lbV9pbml0OgotCi0JbGRyICAgICByMSwgID1NRU1DX0JBU0UJCS8qIGdldCBtZW1vcnkgY29udHJvbGxlciBiYXNlIGFkZHIuICovCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAyYTogSW5pdGlhbGl6ZSBBc3luY2hyb25vdXMgc3RhdGljIG1lbW9yeSBjb250cm9sbGVyICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIE1TQyByZWdpc3RlcnM6IHRpbWluZywgYnVzIHdpZHRoLCBtZW0gdHlwZSAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCS8qIE1TQzA6IG5DUygwLDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLCAgID1DT05GSUdfU1lTX01TQzBfVkFMCi0Jc3RyICAgICByMiwgICBbcjEsICNNU0MwX09GRlNFVF0KLQlsZHIgICAgIHIyLCAgIFtyMSwgI01TQzBfT0ZGU0VUXQkvKiByZWFkIGJhY2sgdG8gZW5zdXJlICAgICAgKi8KLQkJCQkJCS8qIHRoYXQgZGF0YSBsYXRjaGVzICAgICAgICAqLwotCS8qIE1TQzE6IG5DUygyLDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTVNDMV9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTVNDMV9PRkZTRVRdCi0JbGRyICAgICByMiwgIFtyMSwgI01TQzFfT0ZGU0VUXQotCi0JLyogTVNDMjogbkNTKDQsNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NU0MyX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNU0MyX09GRlNFVF0KLQlsZHIgICAgIHIyLCAgW3IxLCAjTVNDMl9PRkZTRVRdCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAyYjogSW5pdGlhbGl6ZSBDYXJkIEludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIE1FQ1I6IE1lbW9yeSBFeHBhbnNpb24gQ2FyZCBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTUVDUl9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTUVDUl9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNRUNSX09GRlNFVF0KLQotCS8qIE1DTUVNMDogQ2FyZCBJbnRlcmZhY2Ugc2xvdCAwIHRpbWluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTUNNRU0wX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNQ01FTTBfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNNRU0wX09GRlNFVF0KLQotCS8qIE1DTUVNMTogQ2FyZCBJbnRlcmZhY2Ugc2xvdCAxIHRpbWluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTUNNRU0xX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNQ01FTTFfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNNRU0xX09GRlNFVF0KLQotCS8qIE1DQVRUMDogQ2FyZCBJbnRlcmZhY2UgQXR0cmlidXRlIFNwYWNlIFRpbWluZywgc2xvdCAwICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTUNBVFQwX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNQ0FUVDBfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNBVFQwX09GRlNFVF0KLQotCS8qIE1DQVRUMTogQ2FyZCBJbnRlcmZhY2UgQXR0cmlidXRlIFNwYWNlIFRpbWluZywgc2xvdCAxICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTUNBVFQxX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNQ0FUVDFfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNBVFQxX09GRlNFVF0KLQotCS8qIE1DSU8wOiBDYXJkIEludGVyZmFjZSBJL08gU3BhY2UgVGltaW5nLCBzbG90IDAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTUNJTzBfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DSU8wX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01DSU8wX09GRlNFVF0KLQotCS8qIE1DSU8xOiBDYXJkIEludGVyZmFjZSBJL08gU3BhY2UgVGltaW5nLCBzbG90IDEgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTUNJTzFfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DSU8xX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01DSU8xX09GRlNFVF0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJjOiBXcml0ZSBGTFlDTkZHICBGSVhNRTogd2hhdCdzIHRoYXQ/Pz8gICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogdGVzdCBpZiB3ZSBydW4gZnJvbSBmbGFzaCBvciBSQU0gLSBSQU0vQkRJOiBkb24ndCBzZXR1cCBSQU0gICAgICAqLwotCWFkcglyMywgbWVtX2luaXQJCS8qIHIwIDwtIGN1cnJlbnQgcG9zaXRpb24gb2YgY29kZSAgICovCi0JbGRyCXIyLCA9bWVtX2luaXQKLQljbXAJcjMsIHIyCQkJLyogc2tpcCBpbml0IGlmIGluIHBsYWNlICAgICAgICAgICAgKi8KLQliZXEJaW5pdGlycXMKLQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMmQ6IEluaXRpYWxpemUgVGltaW5nIGZvciBTeW5jIE1lbW9yeSAoU0RDTEswKSAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBCZWZvcmUgYWNjZXNzaW5nIE1EUkVGUiB3ZSBuZWVkIGEgdmFsaWQgRFJJIGZpZWxkLCBzbyB3ZSBzZXQgICAgICovCi0JLyogdGhpcyB0byBwb3dlciBvbiBkZWZhdWx0cyArIERSSSBmaWVsZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JbGRyCXIzLAk9Q09ORklHX1NZU19NRFJFRlJfVkFMCi0JbGRyCXIyLAk9MHhGRkYKLQlhbmQJcjMsCXIzLCByMgotCWxkcglyNCwJPTB4MDNjYTQwMDAKLQlvcnIJcjQsCXI0LCAgcjMKLQotCXN0cglyNCwJW3IxLCAjTURSRUZSX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRFJFRlIgICAgICAgICovCi0JbGRyICAgICByNCwJW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMzogSW5pdGlhbGl6ZSBTeW5jaHJvbm91cyBTdGF0aWMgTWVtb3J5IChGbGFzaC9QZXJpcGhlcmFscykgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBJbml0aWFsaXplIFNYQ05GRyByZWdpc3Rlci4gQXNzZXJ0IHRoZSBlbmFibGUgYml0cyAgICAgICAgICAgICAgICovCi0KLQkvKiBXcml0ZSBTWE1SUyB0byBjYXVzZSBhbiBNUlMgY29tbWFuZCB0byBhbGwgZW5hYmxlZCBiYW5rcyBvZiAgICAgICovCi0JLyogc3luY2hyb25vdXMgc3RhdGljIG1lbW9yeS4gTm90ZSB0aGF0IFNYTENSIG5lZWQgbm90IGJlIHdyaXR0ZW4gICAqLwotCS8qIGF0IHRoaXMgdGltZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCS8qIEZJWE1FOiB3ZSB1c2UgYXN5bmMgbW9kZSBmb3Igbm93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgNDogSW5pdGlhbGl6ZSBTRFJBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBTdGVwIDRhOiBhc3NlcnQgTURSRUZSOks/UlVOIGFuZCBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogICAgICAgICAgTURSRUZSOksxREIyIGFuZCBNRFJFRlI6SzJEQjIgYXMgZGVzaXJlZC4gICAgICAgICAgICAgICAqLwotCi0JbGRyCXI0LAk9Q09ORklHX1NZU19NRFJFRlJfVkFMCi0Jc3RyCXI0LAlbcjEsICNNRFJFRlJfT0ZGU0VUXQkvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KLQlsZHIJcjQsCVtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQkvKiBTdGVwIDRiOiBkZS1hc3NlcnQgTURSRUZSOlNMRlJTSC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQliaWMJcjQsCXI0LCAjKE1EUkVGUl9TTEZSU0gpCi0KLQlzdHIgICAgIHI0LCAgICAgW3IxLCAjTURSRUZSX09GRlNFVF0gICAgLyogd3JpdGUgYmFjayBNRFJFRlIgICAgICAgICovCi0JbGRyICAgICByNCwgICAgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQotCS8qIFN0ZXAgNGM6IGFzc2VydCBNRFJFRlI6RTFQSU4gYW5kIEUwUElPICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCW9ycglyNCwJcjQsCSMoTURSRUZSX0UxUElOfE1EUkVGUl9FMFBJTikKLQotCXN0ciAgICAgcjQsICAgICBbcjEsICNNRFJFRlJfT0ZGU0VUXSAgICAvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KLQlsZHIgICAgIHI0LCAgICAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCi0JLyogU3RlcCA0ZDogd3JpdGUgTURDTkZHIHdpdGggTURDTkZHOkRFeCBkZWFzc2VydGVkIChzZXQgdG8gMCksIHRvICAqLwotCS8qICAgICAgICAgIGNvbmZpZ3VyZSBidXQgbm90IGVuYWJsZSBlYWNoIFNEUkFNIHBhcnRpdGlvbiBwYWlyLiAgICAgKi8KLQotCWxkcglyNCwJPUNPTkZJR19TWVNfTURDTkZHX1ZBTAotCWJpYwlyNCwJcjQsCSMoTURDTkZHX0RFMHxNRENORkdfREUxKQotCi0Jc3RyICAgICByNCwgICAgIFtyMSwgI01EQ05GR19PRkZTRVRdCS8qIHdyaXRlIGJhY2sgTURDTkZHICAgICAgICAqLwotCWxkciAgICAgcjQsICAgICBbcjEsICNNRENORkdfT0ZGU0VUXQotCi0KLQkvKiBTdGVwIDRlOiBXYWl0IGZvciB0aGUgY2xvY2sgdG8gdGhlIFNEUkFNcyB0byBzdGFiaWxpemUsICAgICAgICAgICovCi0JLyogICAgICAgICAgMTAwLi4yMDAgtXNlYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JbGRyIHIzLCA9T1NDUgkJCS8qIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvICovCi0JbW92IHIyLCAjMAotCXN0ciByMiwgW3IzXQotCWxkciByNCwgPTB4MzAwCQkJLyogcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsICAgKi8KLQkJCQkJLyogc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eSAgICAgICAgKi8KLTE6Ci0JbGRyIHIyLCBbcjNdCi0JY21wIHI0LCByMgotCWJndCAxYgotCi0KLQkvKiBTdGVwIDRmOiBUcmlnZ2VyIGEgbnVtYmVyICh1c3VhbGx5IDgpIHJlZnJlc2ggY3ljbGVzIGJ5ICAgICAgICAgICovCi0JLyogICAgICAgICAgYXR0ZW1wdGluZyBub24tYnVyc3QgcmVhZCBvciB3cml0ZSBhY2Nlc3NlcyB0byBkaXNhYmxlZCAqLwotCS8qICAgICAgICAgIFNEUkFNLCBhcyBjb21tb25seSBzcGVjaWZpZWQgaW4gdGhlIHBvd2VyIHVwIHNlcXVlbmNlICAgKi8KLQkvKiAgICAgICAgICBkb2N1bWVudGVkIGluIFNEUkFNIGRhdGEgc2hlZXRzLiBUaGUgYWRkcmVzcyhlcykgdXNlZCAgICovCi0JLyogICAgICAgICAgZm9yIHRoaXMgcHVycG9zZSBtdXN0IG5vdCBiZSBjYWNoZWFibGUuICAgICAgICAgICAgICAgICAqLwotCi0JLyogICAgICAgICAgVGhlcmUgc2hvdWxkIDkgd3JpdGVzLCBzaW5jZSB0aGUgZmlyc3Qgd3JpdGUgZG9lc24ndCAgICAqLwotCS8qICAgICAgICAgIHRyaWdnZXIgYSByZWZyZXNoIGN5Y2xlIG9uIFBYQTI1MC4gU2VlIEludGVsIFBYQTI1MCBhbmQgKi8KLQkvKiAgICAgICAgICBQWEEyMTAgUHJvY2Vzc29ycyBTcGVjaWZpY2F0aW9uIFVwZGF0ZSwgICAgICAgICAgICAgICAgICovCi0JLyogICAgICAgICAgSmFuIDIwMDMsIEVycmF0YSAjMTE2LCBwYWdlIDMwLiAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0KLQlsZHIJcjMsCT1DT05GSUdfU1lTX0RSQU1fQkFTRQotCXN0cglyMiwgW3IzXQotCXN0cglyMiwgW3IzXQotCXN0cglyMiwgW3IzXQotCXN0cglyMiwgW3IzXQotCXN0cglyMiwgW3IzXQotCXN0cglyMiwgW3IzXQotCXN0cglyMiwgW3IzXQotCXN0cglyMiwgW3IzXQotCXN0cglyMiwgW3IzXQotCi0JLyogU3RlcCA0ZzogV3JpdGUgTURDTkZHIHdpdGggZW5hYmxlIGJpdHMgYXNzZXJ0ZWQgICAgICAgICAgICAgICAgICAqLwotCS8qICAgICAgICAgIChNRENORkc6REV4IHNldCB0byAxKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCWxkcglyMywgW3IxLCAjTURDTkZHX09GRlNFVF0KLQlvcnIJcjMsCXIzLAkjKE1EQ05GR19ERTB8TURDTkZHX0RFMSkKLQlzdHIJcjMsIFtyMSwgI01EQ05GR19PRkZTRVRdCi0KLQkvKiBTdGVwIDRoOiBXcml0ZSBNRE1SUy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTURNUlNfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01ETVJTX09GRlNFVF0KLQotCi0JLyogV2UgYXJlIGZpbmlzaGVkIHdpdGggSW50ZWwncyBtZW1vcnkgY29udHJvbGxlciBpbml0aWFsaXNhdGlvbiAgICAqLwotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIERpc2FibGUgKG1hc2spIGFsbCBpbnRlcnJ1cHRzIGF0IGludGVycnVwdCBjb250cm9sbGVyICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLWluaXRpcnFzOgotCi0JbW92ICAgICByMSwgIzAJCS8qIGNsZWFyIGludC4gbGV2ZWwgcmVnaXN0ZXIgKElSUSwgbm90IEZJUSkgKi8KLQlsZHIgICAgIHIyLCAgPUlDTFIKLQlzdHIgICAgIHIxLCAgW3IyXQotCi0JbGRyICAgICByMiwgID1JQ01SCS8qIG1hc2sgYWxsIGludGVycnVwdHMgYXQgdGhlIGNvbnRyb2xsZXIgICAgKi8KLQlzdHIgICAgIHIxLCAgW3IyXQotCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogQ2xvY2sgaW5pdGlhbGlzYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotaW5pdGNsa3M6Ci0KLQkvKiBEaXNhYmxlIHRoZSBwZXJpcGhlcmFsIGNsb2NrcywgYW5kIHNldCB0aGUgY29yZSBjbG9jayBmcmVxdWVuY3kgICovCi0JLyogKGhhcmQtY29kaW5nIGF0IDM5OC4xMk1IeiBmb3Igbm93KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JLyogVHVybiBPZmYgQUxMIG9uLWNoaXAgcGVyaXBoZXJhbCBjbG9ja3MgZm9yIHJlLWNvbmZpZ3VyYXRpb24gICAgICAqLwotCS8qIE5vdGU6IFNlZSBsYWJlbCAnRU5BQkxFQ0xLUycgZm9yIHRoZSByZS1lbmFibGluZyAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIxLCAgPUNLRU4KLQltb3YgICAgIHIyLCAgIzAKLQlzdHIgICAgIHIyLCAgW3IxXQotCi0KLQkvKiBkZWZhdWx0IHZhbHVlIGluIGNhc2Ugbm8gdmFsaWQgcm90YXJ5IHN3aXRjaCBzZXR0aW5nIGlzIGZvdW5kICAgICovCi0JbGRyICAgICByMiwgPShDQ0NSX0wyN3xDQ0NSX00yfENDQ1JfTjEwKSAgLyogREVGQVVMVDogezIwMC8yMDAvMTAwfSAqLwotCi0JLyogLi4uIGFuZCB3cml0ZSB0aGUgY29yZSBjbG9jayBjb25maWcgcmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjEsICA9Q0NDUgotCXN0ciAgICAgcjIsICBbcjFdCi0KLQkvKiBlbmFibGUgdGhlIDMyS2h6IG9zY2lsbGF0b3IgZm9yIFJUQyBhbmQgUG93ZXJNYW5hZ2VyICAgICAgICAgICAgICovCi0vKgotCWxkciAgICAgcjEsICA9T1NDQwotCW1vdiAgICAgcjIsICAjT1NDQ19PT04KLQlzdHIgICAgIHIyLCAgW3IxXQotKi8KLQkvKiBOT1RFOiAgc3BpbiBoZXJlIHVudGlsIE9TQ0MuT09LIGdldCBzZXQsIG1lYW5pbmcgdGhlIFBMTCAgICAgICAgICovCi0JLyogaGFzIHNldHRsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotNjA6Ci0JbGRyICAgICByMiwgW3IxXQotCWFuZHMgICAgcjIsIHIyLCAjMQotCWJlcSAgICAgNjBiCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIFNhdmUgU0RSQU0gc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIJcjEsID1EUkFNX1NJWkUKLQlzdHIJcjgsIFtyMV0KLQotCS8qIEludGVycnVwdCBpbml0OiBNYXNrIGFsbCBpbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIJcjAsID1JQ01SCQkJLyogZW5hYmxlIG5vIHNvdXJjZXMgICAgICAgICovCi0JbW92CXIxLCAjMAotCXN0cglyMSwgW3IwXQotCi0JLyogRklYTUUgKi8KLQotI2lmbmRlZiBERUJVRwotCS8qRGlzYWJsZSBzb2Z0d2FyZSBhbmQgZGF0YSBicmVha3BvaW50cyAqLwotCW1vdglyMCwjMAotCW1jcglwMTUsMCxyMCxjMTQsYzgsMCAgLyogaWJjcjAgKi8KLQltY3IJcDE1LDAscjAsYzE0LGM5LDAgIC8qIGliY3IxICovCi0JbWNyCXAxNSwwLHIwLGMxNCxjNCwwICAvKiBkYmNvbiAqLwotCi0JLypFbmFibGUgYWxsIGRlYnVnIGZ1bmN0aW9uYWxpdHkgKi8KLQltb3YJcjAsIzB4ODAwMDAwMDAKLQltY3IJcDE0LDAscjAsYzEwLGMwLDAgIC8qIGRjc3IgKi8KLSNlbmRpZgotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIEVuZCBsb3dsZXZlbF9pbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotZW5kbG93bGV2ZWxfaW5pdDoKLQotICAgIG1vdiAgICAgcGMsIGxyCmRpZmYgLS1naXQgYS9ib2FyZC9rb3JhdC9pbml0LlMgYi9ib2FyZC9rb3JhdC9pbml0LlMKaW5kZXggYmZjNmJjMS4uMzc0MTI3NyAxMDA2NDQKLS0tIGEvYm9hcmQva29yYXQvaW5pdC5TCisrKyBiL2JvYXJkL2tvcmF0L2luaXQuUwpAQCAtMTksNiArMTksNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxwcGNfYXNtLnRtcGw+CiAjaW5jbHVkZSA8YXNtL21tdS5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgpkaWZmIC0tZ2l0IGEvYm9hcmQvbHViYm9jay9NYWtlZmlsZSBiL2JvYXJkL2x1YmJvY2svTWFrZWZpbGUKaW5kZXggNjU5MjMwNy4uMjg1M2JjYSAxMDA2NDQKLS0tIGEvYm9hcmQvbHViYm9jay9NYWtlZmlsZQorKysgYi9ib2FyZC9sdWJib2NrL01ha2VmaWxlCkBAIC0yNywxNyArMjcsMTUgQEAKIExJQgk9ICQob2JqKWxpYiQoQk9BUkQpLmEKIAogQ09CSlMJOj0gbHViYm9jay5vIGZsYXNoLm8KLVNPQkpTCTo9IGxvd2xldmVsX2luaXQubwogCi1TUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCitTUkNTCTo9ICQoQ09CSlM6Lm89LmMpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKLVNPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKIAotJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChTT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAKIGNsZWFuOgotCXJtIC1mICQoU09CSlMpICQoT0JKUykKKwlybSAtZiAkKE9CSlMpCiAKIGRpc3RjbGVhbjoJY2xlYW4KIAlybSAtZiAkKExJQikgY29yZSAqLmJhayAkKG9iaikuZGVwZW5kCmRpZmYgLS1naXQgYS9ib2FyZC9sdWJib2NrL2NvbmZpZy5tayBiL2JvYXJkL2x1YmJvY2svY29uZmlnLm1rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzBmNjk1Li4wMDAwMDAwCi0tLSBhL2JvYXJkL2x1YmJvY2svY29uZmlnLm1rCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jQ09ORklHX1NZU19URVhUX0JBU0UgPSAweGExNzAwMDAwCi1DT05GSUdfU1lTX1RFWFRfQkFTRSA9IDB4YTMwODAwMDAKLSNDT05GSUdfU1lTX1RFWFRfQkFTRSA9IDAKZGlmZiAtLWdpdCBhL2JvYXJkL2x1YmJvY2svbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvbHViYm9jay9sb3dsZXZlbF9pbml0LlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiNmY2OWQuLjAwMDAwMDAKLS0tIGEvYm9hcmQvbHViYm9jay9sb3dsZXZlbF9pbml0LlMKKysrIC9kZXYvbnVsbApAQCAtMSw0MTEgKzAsMCBAQAotLyoKLSAqIE1vc3Qgb2YgdGhpcyB0YWtlbiBmcm9tIFJlZGJvb3QgaGFsX3BsYXRmb3JtX3NldHVwLmggd2l0aCBjbGVhbnVwCi0gKgotICogTk9URTogSSBoYXZlbid0IGNsZWFuIHRoaXMgdXAgY29uc2lkZXJhYmx5LCBqdXN0IGVub3VnaCB0byBnZXQgaXQKLSAqIHJ1bm5pbmcuIFNlZSBoYWxfcGxhdGZvcm1fc2V0dXAuaCBmb3IgdGhlIHNvdXJjZS4gU2VlCi0gKiBib2FyZC9jcmFkbGUvbG93bGV2ZWxfaW5pdC5TIGZvciBhbm90aGVyIFBYQTI1MCBzZXR1cCB0aGF0IGlzCi0gKiBtdWNoIGNsZWFuZXIuCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2luY2x1ZGUgPHZlcnNpb24uaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgotCi1EUkFNX1NJWkU6ICAubG9uZyAgIENPTkZJR19TWVNfRFJBTV9TSVpFCi0KLS8qIHdhaXQgZm9yIGNvcHJvY2Vzc29yIHdyaXRlIGNvbXBsZXRlICovCi0gICAubWFjcm8gQ1BXQUlUIHJlZwotICAgbXJjICBwMTUsMCxccmVnLGMyLGMwLDAKLSAgIG1vdiAgXHJlZyxccmVnCi0gICBzdWIgIHBjLHBjLCM0Ci0gICAuZW5kbQotCi0KLS8qCi0gKglNZW1vcnkgc2V0dXAKLSAqLwotCi0uZ2xvYmwgbG93bGV2ZWxfaW5pdAotbG93bGV2ZWxfaW5pdDoKLQotICAgIG1vdiAgICAgIHIxMCwgbHIKLQotCS8qIFNldCB1cCBHUElPIHBpbnMgZmlyc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCWxkcgkJcjAsCT1HUFNSMAotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQU1IwX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQU1IxCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BTUjFfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BTUjIKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUFNSMl9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUENSMAotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQQ1IwX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQQ1IxCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BDUjFfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BDUjIKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUENSMl9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUERSMAotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQRFIwX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQRFIxCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BEUjFfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BEUjIKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUERSMl9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMF9MCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjBfTF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMF9VCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjBfVV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMV9MCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjFfTF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMV9VCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjFfVV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMl9MCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjJfTF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMl9VCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjJfVV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcglyMCwJPVBTU1IJCS8qIGVuYWJsZSBHUElPIHBpbnMgKi8KLQlsZHIJCXIxLAk9Q09ORklHX1NZU19QU1NSX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIEVuYWJsZSBtZW1vcnkgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogVGhlIHNlcXVlbmNlIGJlbG93IGlzIGJhc2VkIG9uIHRoZSByZWNvbW1lbmRlZCBpbml0IHN0ZXBzICAgICAgICAqLwotCS8qIGRldGFpbGVkIGluIHRoZSBJbnRlbCBQWEEyNTAgT3BlcmF0aW5nIFN5c3RlbXMgRGV2ZWxvcGVycyBHdWlkZSwgKi8KLQkvKiBDaGFwdGVyIDEwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMTogV2FpdCBmb3IgYXQgbGVhc3QgMjAwIG1pY3Jvc2Vkb25kcyB0byBhbGxvdyBpbnRlcm5hbCAgICAgKi8KLQkvKiAgICAgICAgIGNsb2NrcyB0byBzZXR0bGUuIE9ubHkgbmVjZXNzYXJ5IGFmdGVyIGhhcmQgcmVzZXQuLi4gICAgICovCi0JLyogICAgICAgICBGSVhNRTogY2FuIGJlIG9wdGltaXplZCBsYXRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCWxkciByMywgPU9TQ1IJCQkvKiByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybyAqLwotCW1vdiByMiwgIzAKLQlzdHIgcjIsIFtyM10KLQlsZHIgcjQsID0weDMwMAkJCS8qIHJlYWxseSAweDJFMSBpcyBhYm91dCAyMDB1c2VjLCAgICovCi0JCQkJCS8qIHNvIDB4MzAwIHNob3VsZCBiZSBwbGVudHkgICAgICAgICovCi0xOgotCWxkciByMiwgW3IzXQotCWNtcCByNCwgcjIKLQliZ3QgMWIKLQotbWVtX2luaXQ6Ci0KLQlsZHIgICAgIHIxLCAgPU1FTUNfQkFTRQkJLyogZ2V0IG1lbW9yeSBjb250cm9sbGVyIGJhc2UgYWRkci4gKi8KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJhOiBJbml0aWFsaXplIEFzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5IGNvbnRyb2xsZXIgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogTVNDIHJlZ2lzdGVyczogdGltaW5nLCBidXMgd2lkdGgsIG1lbSB0eXBlICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JLyogTVNDMDogbkNTKDAsMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICAgPUNPTkZJR19TWVNfTVNDMF9WQUwKLQlzdHIgICAgIHIyLCAgIFtyMSwgI01TQzBfT0ZGU0VUXQotCWxkciAgICAgcjIsICAgW3IxLCAjTVNDMF9PRkZTRVRdCS8qIHJlYWQgYmFjayB0byBlbnN1cmUgICAgICAqLwotCQkJCQkJLyogdGhhdCBkYXRhIGxhdGNoZXMgICAgICAgICovCi0JLyogTVNDMTogbkNTKDIsMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NU0MxX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNU0MxX09GRlNFVF0KLQlsZHIgICAgIHIyLCAgW3IxLCAjTVNDMV9PRkZTRVRdCi0KLQkvKiBNU0MyOiBuQ1MoNCw1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiwgID1DT05GSUdfU1lTX01TQzJfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01TQzJfT0ZGU0VUXQotCWxkciAgICAgcjIsICBbcjEsICNNU0MyX09GRlNFVF0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJiOiBJbml0aWFsaXplIENhcmQgSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogTUVDUjogTWVtb3J5IEV4cGFuc2lvbiBDYXJkIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NRUNSX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNRUNSX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01FQ1JfT0ZGU0VUXQotCi0JLyogTUNNRU0wOiBDYXJkIEludGVyZmFjZSBzbG90IDAgdGltaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ01FTTBfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DTUVNMF9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ01FTTBfT0ZGU0VUXQotCi0JLyogTUNNRU0xOiBDYXJkIEludGVyZmFjZSBzbG90IDEgdGltaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ01FTTFfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DTUVNMV9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ01FTTFfT0ZGU0VUXQotCi0JLyogTUNBVFQwOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ0FUVDBfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DQVRUMF9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ0FUVDBfT0ZGU0VUXQotCi0JLyogTUNBVFQxOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDEgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ0FUVDFfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DQVRUMV9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ0FUVDFfT0ZGU0VUXQotCi0JLyogTUNJTzA6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMCAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ0lPMF9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTUNJTzBfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNJTzBfT0ZGU0VUXQotCi0JLyogTUNJTzE6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMSAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ0lPMV9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTUNJTzFfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNJTzFfT0ZGU0VUXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMmM6IFdyaXRlIEZMWUNORkcgIEZJWE1FOiB3aGF0J3MgdGhhdD8/PyAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJkOiBJbml0aWFsaXplIFRpbWluZyBmb3IgU3luYyBNZW1vcnkgKFNEQ0xLMCkgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogQmVmb3JlIGFjY2Vzc2luZyBNRFJFRlIgd2UgbmVlZCBhIHZhbGlkIERSSSBmaWVsZCwgc28gd2Ugc2V0ICAgICAqLwotCS8qIHRoaXMgdG8gcG93ZXIgb24gZGVmYXVsdHMgKyBEUkkgZmllbGQuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCWxkciAgICAgcjMsICAgICA9Q09ORklHX1NZU19NRFJFRlJfVkFMCi0JbGRyICAgICByMiwgICAgID0weEZGRgotCWFuZCAgICAgcjMsICAgICByMywgIHIyCi0JbGRyCXI0LAk9MHgwM2NhNDAwMAotCW9yciAgICAgcjQsICAgICByNCwgIHIzCi0Jc3RyCXI0LAlbcjEsICNNRFJFRlJfT0ZGU0VUXQkvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KLQlsZHIgICAgIHI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCS8qIE5vdGU6IHByZXNlcnZlIHRoZSBtZHJlZnIgdmFsdWUgaW4gcjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMzogSW5pdGlhbGl6ZSBTeW5jaHJvbm91cyBTdGF0aWMgTWVtb3J5IChGbGFzaC9QZXJpcGhlcmFscykgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBJbml0aWFsaXplIFNYQ05GRyByZWdpc3Rlci4gQXNzZXJ0IHRoZSBlbmFibGUgYml0cyAgICAgICAgICAgICAgICovCi0KLQkvKiBXcml0ZSBTWE1SUyB0byBjYXVzZSBhbiBNUlMgY29tbWFuZCB0byBhbGwgZW5hYmxlZCBiYW5rcyBvZiAgICAgICovCi0JLyogc3luY2hyb25vdXMgc3RhdGljIG1lbW9yeS4gTm90ZSB0aGF0IFNYTENSIG5lZWQgbm90IGJlIHdyaXR0ZW4gICAqLwotCS8qIGF0IHRoaXMgdGltZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCS8qIEZJWE1FOiB3ZSB1c2UgYXN5bmMgbW9kZSBmb3Igbm93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgNDogSW5pdGlhbGl6ZSBTRFJBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBzZXQgTURSRUZSIGFjY29yZGluZyB0byB1c2VyIGRlZmluZSB3aXRoIGV4Y2VwdGlvbiBvZiBhIGZldyBiaXRzICovCi0KLQlsZHIgICAgIHI0LCAgICAgPUNPTkZJR19TWVNfTURSRUZSX1ZBTAotCW9ycglyNCwJcjQsCSMoTURSRUZSX1NMRlJTSCkKLQliaWMJcjQsCXI0LAkjKE1EUkVGUl9FMVBJTnxNRFJFRlJfRTBQSU4pCi0Jc3RyICAgICByNCwgICAgIFtyMSwgI01EUkVGUl9PRkZTRVRdICAgIC8qIHdyaXRlIGJhY2sgTURSRUZSICAgICAgICAqLwotCWxkciAgICAgcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0JLyogU3RlcCA0YjogZGUtYXNzZXJ0IE1EUkVGUjpTTEZSU0guICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JYmljCXI0LAlyNCwJIyhNRFJFRlJfU0xGUlNIKQotCXN0ciAgICAgcjQsICAgICBbcjEsICNNRFJFRlJfT0ZGU0VUXSAgICAvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KLQlsZHIgICAgIHI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCi0JLyogU3RlcCA0YzogYXNzZXJ0IE1EUkVGUjpFMVBJTiBhbmQgRTBQSU8gYXMgZGVzaXJlZCAgICAgICAgICAgICAgICAqLwotCi0JbGRyICAgICByNCwgICAgID1DT05GSUdfU1lTX01EUkVGUl9WQUwKLQlzdHIgICAgIHI0LCAgICAgW3IxLCAjTURSRUZSX09GRlNFVF0gICAgLyogd3JpdGUgYmFjayBNRFJFRlIgICAgICAgICovCi0JbGRyICAgICByNCwgICAgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQotCS8qIFN0ZXAgNGQ6IHdyaXRlIE1EQ05GRyB3aXRoIE1EQ05GRzpERXggZGVhc3NlcnRlZCAoc2V0IHRvIDApLCB0byAgKi8KLQkvKiAgICAgICAgICBjb25maWd1cmUgYnV0IG5vdCBlbmFibGUgZWFjaCBTRFJBTSBwYXJ0aXRpb24gcGFpci4gICAgICovCi0KLQlsZHIJcjQsCT1DT05GSUdfU1lTX01EQ05GR19WQUwKLQliaWMJcjQsCXI0LAkjKE1EQ05GR19ERTB8TURDTkZHX0RFMSkKLQotCXN0ciAgICAgcjQsICAgICBbcjEsICNNRENORkdfT0ZGU0VUXQkvKiB3cml0ZSBiYWNrIE1EQ05GRyAgICAgICAgKi8KLQlsZHIgICAgIHI0LCAgICAgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotCi0JLyogU3RlcCA0ZTogV2FpdCBmb3IgdGhlIGNsb2NrIHRvIHRoZSBTRFJBTXMgdG8gc3RhYmlsaXplLCAgICAgICAgICAqLwotCS8qICAgICAgICAgIDEwMC4uMjAwILVzZWMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCWxkciByMywgPU9TQ1IJCQkvKiByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybyAqLwotCW1vdiByMiwgIzAKLQkgICAgc3RyIHIyLCBbcjNdCi0JbGRyIHI0LCA9MHgzMDAJCQkvKiByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgICAqLwotCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICAgICAgICAqLwotMToKLQkgICAgbGRyIHIyLCBbcjNdCi0JICAgIGNtcCByNCwgcjIKLQkgICAgYmd0IDFiCi0KLQotCS8qIFN0ZXAgNGY6IFRyaWdnZXIgYSBudW1iZXIgKHVzdWFsbHkgOCkgcmVmcmVzaCBjeWNsZXMgYnkgICAgICAgICAgKi8KLQkvKiAgICAgICAgICBhdHRlbXB0aW5nIG5vbi1idXJzdCByZWFkIG9yIHdyaXRlIGFjY2Vzc2VzIHRvIGRpc2FibGVkICovCi0JLyogICAgICAgICAgU0RSQU0sIGFzIGNvbW1vbmx5IHNwZWNpZmllZCBpbiB0aGUgcG93ZXIgdXAgc2VxdWVuY2UgICAqLwotCS8qICAgICAgICAgIGRvY3VtZW50ZWQgaW4gU0RSQU0gZGF0YSBzaGVldHMuIFRoZSBhZGRyZXNzKGVzKSB1c2VkICAgKi8KLQkvKiAgICAgICAgICBmb3IgdGhpcyBwdXJwb3NlIG11c3Qgbm90IGJlIGNhY2hlYWJsZS4gICAgICAgICAgICAgICAgICovCi0KLQlsZHIJcjMsCT1DT05GSUdfU1lTX0RSQU1fQkFTRQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCi0KLQkvKiBTdGVwIDRnOiBXcml0ZSBNRENORkcgd2l0aCBlbmFibGUgYml0cyBhc3NlcnRlZCAgICAgICAgICAgICAgICAgICovCi0JLyogICAgICAgICAgKE1EQ05GRzpERXggc2V0IHRvIDEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JbGRyICAgICByMywgIFtyMSwgI01EQ05GR19PRkZTRVRdCi0Jb3JyCXIzLAlyMywJIyhNRENORkdfREUwfE1EQ05GR19ERTEpCi0Jc3RyICAgICByMywgIFtyMSwgI01EQ05GR19PRkZTRVRdCi0KLQkvKiBTdGVwIDRoOiBXcml0ZSBNRE1SUy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTURNUlNfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01ETVJTX09GRlNFVF0KLQotCi0JLyogV2UgYXJlIGZpbmlzaGVkIHdpdGggSW50ZWwncyBtZW1vcnkgY29udHJvbGxlciBpbml0aWFsaXNhdGlvbiAgICAqLwotCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogRGlzYWJsZSAobWFzaykgYWxsIGludGVycnVwdHMgYXQgaW50ZXJydXB0IGNvbnRyb2xsZXIgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotaW5pdGlycXM6Ci0KLQltb3YgICAgIHIxLCAjMAkJLyogY2xlYXIgaW50LiBsZXZlbCByZWdpc3RlciAoSVJRLCBub3QgRklRKSAqLwotCWxkciAgICAgcjIsICA9SUNMUgotCXN0ciAgICAgcjEsICBbcjJdCi0KLQlsZHIgICAgIHIyLCAgPUlDTVIJLyogbWFzayBhbGwgaW50ZXJydXB0cyBhdCB0aGUgY29udHJvbGxlciAgICAqLwotCXN0ciAgICAgcjEsICBbcjJdCi0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBDbG9jayBpbml0aWFsaXNhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1pbml0Y2xrczoKLQotCS8qIERpc2FibGUgdGhlIHBlcmlwaGVyYWwgY2xvY2tzLCBhbmQgc2V0IHRoZSBjb3JlIGNsb2NrIGZyZXF1ZW5jeSAgKi8KLQkvKiAoaGFyZC1jb2RpbmcgYXQgMzk4LjEyTUh6IGZvciBub3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQkvKiBUdXJuIE9mZiBBTEwgb24tY2hpcCBwZXJpcGhlcmFsIGNsb2NrcyBmb3IgcmUtY29uZmlndXJhdGlvbiAgICAgICovCi0JLyogTm90ZTogU2VlIGxhYmVsICdFTkFCTEVDTEtTJyBmb3IgdGhlIHJlLWVuYWJsaW5nICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjEsICA9Q0tFTgotCW1vdiAgICAgcjIsICAjMAotCXN0ciAgICAgcjIsICBbcjFdCi0KLQotCS8qIGRlZmF1bHQgdmFsdWUgaW4gY2FzZSBubyB2YWxpZCByb3Rhcnkgc3dpdGNoIHNldHRpbmcgaXMgZm91bmQgICAgKi8KLQlsZHIgICAgIHIyLCA9KENDQ1JfTDI3fENDQ1JfTTJ8Q0NDUl9OMTApICAvKiBERUZBVUxUOiB7MjAwLzIwMC8xMDB9ICovCi0KLQkvKiAuLi4gYW5kIHdyaXRlIHRoZSBjb3JlIGNsb2NrIGNvbmZpZyByZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMSwgID1DQ0NSCi0Jc3RyICAgICByMiwgIFtyMV0KLQotI2lmZGVmIFJUQwotCS8qIGVuYWJsZSB0aGUgMzJLaHogb3NjaWxsYXRvciBmb3IgUlRDIGFuZCBQb3dlck1hbmFnZXIgICAgICAgICAgICAgKi8KLQotCWxkciAgICAgcjEsICA9T1NDQwotCW1vdiAgICAgcjIsICAjT1NDQ19PT04KLQlzdHIgICAgIHIyLCAgW3IxXQotCi0JLyogTk9URTogIHNwaW4gaGVyZSB1bnRpbCBPU0NDLk9PSyBnZXQgc2V0LCBtZWFuaW5nIHRoZSBQTEwgICAgICAgICAqLwotCS8qIGhhcyBzZXR0bGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLTYwOgotCWxkciAgICAgcjIsIFtyMV0KLQlhbmRzICAgIHIyLCByMiwgIzEKLQliZXEgICAgIDYwYgotI2VuZGlmCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIFNhdmUgU0RSQU0gc2l6ZSAqLwotICAgIGxkciAgICAgcjEsID1EUkFNX1NJWkUKLQkgc3RyCSAgIHI4LCBbcjFdCi0KLQkvKiBJbnRlcnJ1cHQgaW5pdDogTWFzayBhbGwgaW50ZXJydXB0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgbGRyCXIwLCA9SUNNUiAvKiBlbmFibGUgbm8gc291cmNlcyAqLwotCW1vdiByMSwgIzAKLSAgICBzdHIgcjEsIFtyMF0KLQotCS8qIEZJWE1FICovCi0KLSNkZWZpbmUgTk9ERUJVRwotI2lmZGVmIE5PREVCVUcKLQkvKkRpc2FibGUgc29mdHdhcmUgYW5kIGRhdGEgYnJlYWtwb2ludHMgKi8KLQltb3YJcjAsIzAKLQltY3IJcDE1LDAscjAsYzE0LGM4LDAgIC8qIGliY3IwICovCi0JbWNyCXAxNSwwLHIwLGMxNCxjOSwwICAvKiBpYmNyMSAqLwotCW1jcglwMTUsMCxyMCxjMTQsYzQsMCAgLyogZGJjb24gKi8KLQotCS8qRW5hYmxlIGFsbCBkZWJ1ZyBmdW5jdGlvbmFsaXR5ICovCi0JbW92CXIwLCMweDgwMDAwMDAwCi0JbWNyCXAxNCwwLHIwLGMxMCxjMCwwICAvKiBkY3NyICovCi0KLSNlbmRpZgotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIEVuZCBsb3dsZXZlbF9pbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotZW5kbG93bGV2ZWxfaW5pdDoKLQotICAgIG1vdiAgICAgcGMsIGxyCmRpZmYgLS1naXQgYS9ib2FyZC9sdWJib2NrL2x1YmJvY2suYyBiL2JvYXJkL2x1YmJvY2svbHViYm9jay5jCmluZGV4IGQ4ZDZmZmIuLmY3OTFjNWIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2x1YmJvY2svbHViYm9jay5jCisrKyBiL2JvYXJkL2x1YmJvY2svbHViYm9jay5jCkBAIC0zNiw4ICszNiw5IEBACiAKIGludCBib2FyZF9pbml0ICh2b2lkKQogewotCS8qIG1lbW9yeSBhbmQgY3B1LXNwZWVkIGFyZSBzZXR1cCBiZWZvcmUgcmVsb2NhdGlvbiAqLwotCS8qIHNvIHdlIGRvIF9ub3RoaW5nXyBoZXJlICovCisJLyogV2UgaGF2ZSBSQU0sIGRpc2FibGUgY2FjaGUgKi8KKwlkY2FjaGVfZGlzYWJsZSgpOworCWljYWNoZV9kaXNhYmxlKCk7CiAKIAkvKiBhcmNoIG51bWJlciBvZiBMdWJib2NrLUJvYXJkICovCiAJZ2QtPmJkLT5iaV9hcmNoX251bWJlciA9IE1BQ0hfVFlQRV9MVUJCT0NLOwpAQCAtNTUsMTkgKzU2LDE4IEBACiAJcmV0dXJuIDA7CiB9CiAKK2V4dGVybiB2b2lkIHB4YV9kcmFtX2luaXQodm9pZCk7CitpbnQgZHJhbV9pbml0KHZvaWQpCit7CisJcHhhX2RyYW1faW5pdCgpOworCWdkLT5yYW1fc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOworCXJldHVybiAwOworfQogCi1pbnQgZHJhbV9pbml0ICh2b2lkKQordm9pZCBkcmFtX2luaXRfYmFua3NpemUodm9pZCkKIHsKIAlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBQSFlTX1NEUkFNXzE7CiAJZ2QtPmJkLT5iaV9kcmFtWzBdLnNpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKLQlnZC0+YmQtPmJpX2RyYW1bMV0uc3RhcnQgPSBQSFlTX1NEUkFNXzI7Ci0JZ2QtPmJkLT5iaV9kcmFtWzFdLnNpemUgPSBQSFlTX1NEUkFNXzJfU0laRTsKLQlnZC0+YmQtPmJpX2RyYW1bMl0uc3RhcnQgPSBQSFlTX1NEUkFNXzM7Ci0JZ2QtPmJkLT5iaV9kcmFtWzJdLnNpemUgPSBQSFlTX1NEUkFNXzNfU0laRTsKLQlnZC0+YmQtPmJpX2RyYW1bM10uc3RhcnQgPSBQSFlTX1NEUkFNXzQ7Ci0JZ2QtPmJkLT5iaV9kcmFtWzNdLnNpemUgPSBQSFlTX1NEUkFNXzRfU0laRTsKLQotCXJldHVybiAwOwogfQogCiAjaWZkZWYgQ09ORklHX0NNRF9ORVQKZGlmZiAtLWdpdCBhL2JvYXJkL2x3bW9uNS9pbml0LlMgYi9ib2FyZC9sd21vbjUvaW5pdC5TCmluZGV4IDhlZmM4YTEuLjIwMTRjZDcgMTAwNjQ0Ci0tLSBhL2JvYXJkL2x3bW9uNS9pbml0LlMKKysrIGIvYm9hcmQvbHdtb241L2luaXQuUwpAQCAtMjMsNiArMjMsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtLW9mZnNldHMuaD4KICNpbmNsdWRlIDxwcGNfYXNtLnRtcGw+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8YXNtL21tdS5oPgpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0c3RhbC9oY3U0L01ha2VmaWxlIGIvYm9hcmQvbmV0c3RhbC9oY3U0L01ha2VmaWxlCmluZGV4IDY3MjJkNTMuLmNkNjI2NDIgMTAwNjQ0Ci0tLSBhL2JvYXJkL25ldHN0YWwvaGN1NC9NYWtlZmlsZQorKysgYi9ib2FyZC9uZXRzdGFsL2hjdTQvTWFrZWZpbGUKQEAgLTE5LDI0ICsxOSwyNCBAQAogIwogCiBpbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKK2lmbmVxICgkKE9CSlRSRUUpLCQoU1JDVFJFRSkpCiskKHNoZWxsIG1rZGlyIC1wICQob2JqKS4uL2NvbW1vbikKK2VuZGlmCiAKIExJQgk9ICQob2JqKWxpYiQoQk9BUkQpLmEKIAotIyBOT0JKUyA6IE5ldHN0YWwgY29tbW9uIG9iamVjdHMKLU5PQkpTCT0gZml4ZWRfc2RyYW0ubyBubV9ic3AubwotQ09CSlMJPSAkKEJPQVJEKS5vCi1TT0JKUwk9CitDT0JKUwk9ICQoQk9BUkQpLm8gXAorCS4uL2NvbW1vbi9maXhlZF9zZHJhbS5vIFwKKwkuLi9jb21tb24vbm1fYnNwLm8KIAotU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKSAkKGFkZHByZWZpeCAuLi9jb21tb24vLCQoTk9CSlM6Lm89LmMpKQorU1JDUwk6PSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCi1OT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaikuLi9jb21tb24vLCQoTk9CSlMpKQotU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQogCi0kKExJQik6CSQoT0JKUykgJChTT0JKUykgJChOT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykgJChOT0JKUykKKyQoTElCKToJJChPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJF4KIAogY2xlYW46Ci0Jcm0gLWYgJChTT0JKUykgJChPQkpTKQorCXJtIC1mICQoT0JKUykKIAogZGlzdGNsZWFuOgljbGVhbgogCXJtIC1mICQoTElCKSBjb3JlICouYmFrICQob2JqKS5kZXBlbmQKZGlmZiAtLWdpdCBhL2JvYXJkL25ldHN0YWwvaGN1NS9NYWtlZmlsZSBiL2JvYXJkL25ldHN0YWwvaGN1NS9NYWtlZmlsZQppbmRleCA0NDU2NzcxLi5kMDM3NTUyIDEwMDY0NAotLS0gYS9ib2FyZC9uZXRzdGFsL2hjdTUvTWFrZWZpbGUKKysrIGIvYm9hcmQvbmV0c3RhbC9oY3U1L01ha2VmaWxlCkBAIC0xOSwyMiArMTksMjMgQEAKICMKIAogaW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCitpZm5lcSAoJChPQkpUUkVFKSwkKFNSQ1RSRUUpKQorJChzaGVsbCBta2RpciAtcCAkKG9iaikuLi9jb21tb24pCitlbmRpZgogCiBMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCiAKLQotIyBOT0JKUyA6IE5ldHN0YWwgY29tbW9uIG9iamVjdHMKLU5PQkpTCT0gbm1fYnNwLm8KLUNPQkpTCT0gJChCT0FSRCkubyBzZHJhbS5vCitDT0JKUwk9ICQoQk9BUkQpLm8gXAorCXNkcmFtLm8gXAorCS4uL2NvbW1vbi9ubV9ic3AubwogU09CSlMJPSBpbml0Lm8KIAotU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKSAkKGFkZHByZWZpeCAuLi9jb21tb24vLCQoTk9CSlM6Lm89LmMpKQorU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCi1OT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaikuLi9jb21tb24vLCQoTk9CSlMpKQogU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQogCi0kKExJQik6CSQoT0JKUykgJChTT0JKUykgJChOT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykgJChOT0JKUykKKyQoTElCKToJJChPQkpTKSAkKFNPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJF4KIAogY2xlYW46CiAJcm0gLWYgJChTT0JKUykgJChPQkpTKQpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0c3RhbC9tY3UyNS9NYWtlZmlsZSBiL2JvYXJkL25ldHN0YWwvbWN1MjUvTWFrZWZpbGUKaW5kZXggNjcyMmQ1My4uY2Q2MjY0MiAxMDA2NDQKLS0tIGEvYm9hcmQvbmV0c3RhbC9tY3UyNS9NYWtlZmlsZQorKysgYi9ib2FyZC9uZXRzdGFsL21jdTI1L01ha2VmaWxlCkBAIC0xOSwyNCArMTksMjQgQEAKICMKIAogaW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCitpZm5lcSAoJChPQkpUUkVFKSwkKFNSQ1RSRUUpKQorJChzaGVsbCBta2RpciAtcCAkKG9iaikuLi9jb21tb24pCitlbmRpZgogCiBMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCiAKLSMgTk9CSlMgOiBOZXRzdGFsIGNvbW1vbiBvYmplY3RzCi1OT0JKUwk9IGZpeGVkX3NkcmFtLm8gbm1fYnNwLm8KLUNPQkpTCT0gJChCT0FSRCkubwotU09CSlMJPQorQ09CSlMJPSAkKEJPQVJEKS5vIFwKKwkuLi9jb21tb24vZml4ZWRfc2RyYW0ubyBcCisJLi4vY29tbW9uL25tX2JzcC5vCiAKLVNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykgJChhZGRwcmVmaXggLi4vY29tbW9uLywkKE5PQkpTOi5vPS5jKSkKK1NSQ1MJOj0gJChDT0JKUzoubz0uYykKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoQ09CSlMpKQotTk9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLi4vY29tbW9uLywkKE5PQkpTKSkKLVNPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKIAotJChMSUIpOgkkKE9CSlMpICQoU09CSlMpICQoTk9CSlMpCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpICQoTk9CSlMpCiskKExJQik6CSQoT0JKUykKKwkkKEFSKSAkKEFSRkxBR1MpICRAICReCiAKIGNsZWFuOgotCXJtIC1mICQoU09CSlMpICQoT0JKUykKKwlybSAtZiAkKE9CSlMpCiAKIGRpc3RjbGVhbjoJY2xlYW4KIAlybSAtZiAkKExJQikgY29yZSAqLmJhayAkKG9iaikuZGVwZW5kCmRpZmYgLS1naXQgYS9ib2FyZC9wYWxtbGQvTWFrZWZpbGUgYi9ib2FyZC9wYWxtbGQvTWFrZWZpbGUKaW5kZXggYmNiMDE0ZC4uMGNjYThhYiAxMDA2NDQKLS0tIGEvYm9hcmQvcGFsbWxkL01ha2VmaWxlCisrKyBiL2JvYXJkL3BhbG1sZC9NYWtlZmlsZQpAQCAtMjQsMTcgKzI0LDE1IEBACiBMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCiAKIENPQkpTCTo9IHBhbG1sZC5vCi1TT0JKUwk6PSBsb3dsZXZlbF9pbml0Lm8KIAotU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQorU1JDUwk6PSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCi1TT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCiAKLSQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQogCiBjbGVhbjoKLQlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCisJcm0gLWYgJChPQkpTKQogCiBkaXN0Y2xlYW46CWNsZWFuCiAJcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgJChvYmopLmRlcGVuZApkaWZmIC0tZ2l0IGEvYm9hcmQvcGFsbWxkL2NvbmZpZy5tayBiL2JvYXJkL3BhbG1sZC9jb25maWcubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkNjUwYWMuLjAwMDAwMDAKLS0tIGEvYm9hcmQvcGFsbWxkL2NvbmZpZy5taworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRFWFRfQkFTRSA9IDB4YTEwMDAwMDAKZGlmZiAtLWdpdCBhL2JvYXJkL3BhbG1sZC9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9wYWxtbGQvbG93bGV2ZWxfaW5pdC5TCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzM4MmVlLi4wMDAwMDAwCi0tLSBhL2JvYXJkL3BhbG1sZC9sb3dsZXZlbF9pbml0LlMKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogUGFsbSBMaWZlRHJpdmUgTG93bGV2ZWwgSGFyZHdhcmUgSW5pdGlhbGl6YXRpb24KLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4KLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0jaW5jbHVkZSA8dmVyc2lvbi5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+Ci0jaW5jbHVkZSA8YXNtL2FyY2gvbWFjcm8uaD4KLQotLmdsb2JsIGxvd2xldmVsX2luaXQKLWxvd2xldmVsX2luaXQ6Ci0JcHhhX2dwaW9fc2V0dXAKLQotCS8qIEVuYWJsZSBHUElPIHJlc2V0ICovCi0JbGRyCXIwLCA9UENGUgotCW1vdglyMSwgIzB4MzAKLQlzdHIJcjEsIFtyMF0KLQotCXB4YV93YWl0X3RpY2tzCTB4ODAwMAotCXB4YV9tZW1fc2V0dXAKLQlweGFfd2FrZXVwCi0JcHhhX2ludHJfc2V0dXAKLQlweGFfY2xvY2tfc2V0dXAKLQotCW1vdglwYywgbHIKZGlmZiAtLWdpdCBhL2JvYXJkL3BhbG1sZC9wYWxtbGQuYyBiL2JvYXJkL3BhbG1sZC9wYWxtbGQuYwppbmRleCA0ZjAwODdlLi41NTg4ZmU3IDEwMDY0NAotLS0gYS9ib2FyZC9wYWxtbGQvcGFsbWxkLmMKKysrIGIvYm9hcmQvcGFsbWxkL3BhbG1sZC5jCkBAIC0zMyw3ICszMywxMSBAQAogCiBpbnQgYm9hcmRfaW5pdCh2b2lkKQogewotCS8qIGFyY2ggbnVtYmVyIG9mIEx1YmJvY2stQm9hcmQgKi8KKwkvKiBXZSBoYXZlIFJBTSwgZGlzYWJsZSBjYWNoZSAqLworCWRjYWNoZV9kaXNhYmxlKCk7CisJaWNhY2hlX2Rpc2FibGUoKTsKKworCS8qIGFyY2ggbnVtYmVyIG9mIFBhbG1MRCAqLwogCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSBNQUNIX1RZUEVfUEFMTUxEOwogCiAJLyogYWRyZXNzIG9mIGJvb3QgcGFyYW1ldGVycyAqLwpAQCAtNTIsMTIgKzU2LDE4IEBACiAJcmV0dXJuICZzZXJpYWxfZmZ1YXJ0X2RldmljZTsKIH0KIAorZXh0ZXJuIHZvaWQgcHhhX2RyYW1faW5pdCh2b2lkKTsKIGludCBkcmFtX2luaXQodm9pZCkKIHsKKwlweGFfZHJhbV9pbml0KCk7CisJZ2QtPnJhbV9zaXplID0gUEhZU19TRFJBTV8xX1NJWkU7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZHJhbV9pbml0X2JhbmtzaXplKHZvaWQpCit7CiAJZ2QtPmJkLT5iaV9kcmFtWzBdLnN0YXJ0ID0gUEhZU19TRFJBTV8xOwogCWdkLT5iZC0+YmlfZHJhbVswXS5zaXplID0gUEhZU19TRFJBTV8xX1NJWkU7Ci0KLQlyZXR1cm4gMDsKIH0KIAogdWxvbmcgYm9hcmRfZmxhc2hfZ2V0X2xlZ2FjeSh1bG9uZyBiYXNlLCBpbnQgYmFua251bSwgZmxhc2hfaW5mb190ICppbmZvKQpkaWZmIC0tZ2l0IGEvYm9hcmQvcGFsbWxkL3UtYm9vdC5sZHMgYi9ib2FyZC9wYWxtbGQvdS1ib290LmxkcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI0MzU4Yi4uMDAwMDAwMAotLS0gYS9ib2FyZC9wYWxtbGQvdS1ib290LmxkcworKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNQotICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi1PVVRQVVRfRk9STUFUKCJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWxpdHRsZWFybSIpCi1PVVRQVVRfQVJDSChhcm0pCi1FTlRSWShfc3RhcnQpCi1TRUNUSU9OUwotewotCS4gPSAweDAwMDAwMDAwOwotCi0JLiA9IEFMSUdOKDQpOwotCS50ZXh0ICAgICAgOgotCXsKLQkgIGNwdS9weGEvc3RhcnQubwkoLnRleHQpCi0JICAqKC50ZXh0KQotCX0KLQotCS4gPSBBTElHTig0KTsKLQkucm9kYXRhIDogeyAqKFNPUlRfQllfQUxJR05NRU5UKFNPUlRfQllfTkFNRSgucm9kYXRhKikpKSB9Ci0KLQkuID0gQUxJR04oNCk7Ci0JLmRhdGEgOiB7ICooLmRhdGEpIH0KLQotCS4gPSBBTElHTig0KTsKLQkuZ290IDogeyAqKC5nb3QpIH0KLQotCS4gPSAuOwotCV9fdV9ib290X2NtZF9zdGFydCA9IC47Ci0JLnVfYm9vdF9jbWQgOiB7ICooLnVfYm9vdF9jbWQpIH0KLQlfX3VfYm9vdF9jbWRfZW5kID0gLjsKLQotCS4gPSBBTElHTig0KTsKLQlfX2Jzc19zdGFydCA9IC47Ci0JLmJzcyAoTk9MT0FEKSA6IHsgKiguYnNzKSAuID0gQUxJR04oNCk7IH0KLQlfZW5kID0gLjsKLX0KZGlmZiAtLWdpdCBhL2JvYXJkL3BhbG10Yy9NYWtlZmlsZSBiL2JvYXJkL3BhbG10Yy9NYWtlZmlsZQppbmRleCAyMGFjNGUxLi4zYTEyZTY2IDEwMDY0NAotLS0gYS9ib2FyZC9wYWxtdGMvTWFrZWZpbGUKKysrIGIvYm9hcmQvcGFsbXRjL01ha2VmaWxlCkBAIC0yNCwxNyArMjQsMTYgQEAKIExJQgk9ICQob2JqKWxpYiQoQk9BUkQpLmEKIAogQ09CSlMJOj0gcGFsbXRjLm8KLVNPQkpTCTo9IGxvd2xldmVsX2luaXQubwogCi1TUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCitTUkNTCTo9ICQoQ09CSlM6Lm89LmMpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKIFNPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKIAotJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChTT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAKIGNsZWFuOgotCXJtIC1mICQoU09CSlMpICQoT0JKUykKKwlybSAtZiAkKE9CSlMpCiAKIGRpc3RjbGVhbjoJY2xlYW4KIAlybSAtZiAkKExJQikgY29yZSAqLmJhayAkKG9iaikuZGVwZW5kCmRpZmYgLS1naXQgYS9ib2FyZC9wYWxtdGMvY29uZmlnLm1rIGIvYm9hcmQvcGFsbXRjL2NvbmZpZy5tawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ2NTBhYy4uMDAwMDAwMAotLS0gYS9ib2FyZC9wYWxtdGMvY29uZmlnLm1rCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVEVYVF9CQVNFID0gMHhhMTAwMDAwMApkaWZmIC0tZ2l0IGEvYm9hcmQvcGFsbXRjL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL3BhbG10Yy9sb3dsZXZlbF9pbml0LlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MDUwZGMuLjAwMDAwMDAKLS0tIGEvYm9hcmQvcGFsbXRjL2xvd2xldmVsX2luaXQuUworKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBQYWxtIFR1bmdzdGVufEMgTG93bGV2ZWwgSGFyZHdhcmUgSW5pdGlhbGl6YXRpb24KLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4KLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0jaW5jbHVkZSA8dmVyc2lvbi5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+Ci0jaW5jbHVkZSA8YXNtL2FyY2gvbWFjcm8uaD4KLQotLmdsb2JsIGxvd2xldmVsX2luaXQKLWxvd2xldmVsX2luaXQ6Ci0JcHhhX2dwaW9fc2V0dXAKLQlweGFfd2FpdF90aWNrcwkweDgwMDAKLQlweGFfbWVtX3NldHVwCi0JcHhhX3dha2V1cAotCXB4YV9pbnRyX3NldHVwCi0JcHhhX2Nsb2NrX3NldHVwCi0KLQltb3YJcGMsIGxyCmRpZmYgLS1naXQgYS9ib2FyZC9wYWxtdGMvcGFsbXRjLmMgYi9ib2FyZC9wYWxtdGMvcGFsbXRjLmMKaW5kZXggMDRjYjMzZS4uMjUxODZhZSAxMDA2NDQKLS0tIGEvYm9hcmQvcGFsbXRjL3BhbG10Yy5jCisrKyBiL2JvYXJkL3BhbG10Yy9wYWxtdGMuYwpAQCAtMzIsNiArMzIsMTAgQEAKIAogaW50IGJvYXJkX2luaXQodm9pZCkKIHsKKwkvKiBXZSBoYXZlIFJBTSwgZGlzYWJsZSBjYWNoZSAqLworCWRjYWNoZV9kaXNhYmxlKCk7CisJaWNhY2hlX2Rpc2FibGUoKTsKKwogCS8qIEFyY2ggbnVtYmVyIG9mIFBhbG0gVHVuZ3N0ZW58QyAqLwogCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSBNQUNIX1RZUEVfUEFMTVRDOwogCkBAIC01MSw5ICs1NSwxNiBAQAogCXJldHVybiAmc2VyaWFsX2ZmdWFydF9kZXZpY2U7CiB9CiAKK2V4dGVybiB2b2lkIHB4YV9kcmFtX2luaXQodm9pZCk7CiBpbnQgZHJhbV9pbml0KHZvaWQpCiB7CisJcHhhX2RyYW1faW5pdCgpOworCWdkLT5yYW1fc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOworCXJldHVybiAwOworfQorCit2b2lkIGRyYW1faW5pdF9iYW5rc2l6ZSh2b2lkKQorewogCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKIAlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOwotCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYm9hcmQvcGFsbXRjL3UtYm9vdC5sZHMgYi9ib2FyZC9wYWxtdGMvdS1ib290LmxkcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI0MzU4Yi4uMDAwMDAwMAotLS0gYS9ib2FyZC9wYWxtdGMvdS1ib290LmxkcworKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNQotICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi1PVVRQVVRfRk9STUFUKCJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWxpdHRsZWFybSIpCi1PVVRQVVRfQVJDSChhcm0pCi1FTlRSWShfc3RhcnQpCi1TRUNUSU9OUwotewotCS4gPSAweDAwMDAwMDAwOwotCi0JLiA9IEFMSUdOKDQpOwotCS50ZXh0ICAgICAgOgotCXsKLQkgIGNwdS9weGEvc3RhcnQubwkoLnRleHQpCi0JICAqKC50ZXh0KQotCX0KLQotCS4gPSBBTElHTig0KTsKLQkucm9kYXRhIDogeyAqKFNPUlRfQllfQUxJR05NRU5UKFNPUlRfQllfTkFNRSgucm9kYXRhKikpKSB9Ci0KLQkuID0gQUxJR04oNCk7Ci0JLmRhdGEgOiB7ICooLmRhdGEpIH0KLQotCS4gPSBBTElHTig0KTsKLQkuZ290IDogeyAqKC5nb3QpIH0KLQotCS4gPSAuOwotCV9fdV9ib290X2NtZF9zdGFydCA9IC47Ci0JLnVfYm9vdF9jbWQgOiB7ICooLnVfYm9vdF9jbWQpIH0KLQlfX3VfYm9vdF9jbWRfZW5kID0gLjsKLQotCS4gPSBBTElHTig0KTsKLQlfX2Jzc19zdGFydCA9IC47Ci0JLmJzcyAoTk9MT0FEKSA6IHsgKiguYnNzKSAuID0gQUxJR04oNCk7IH0KLQlfZW5kID0gLjsKLX0KZGlmZiAtLWdpdCBhL2JvYXJkL3BjczQ0MGVwL2luaXQuUyBiL2JvYXJkL3BjczQ0MGVwL2luaXQuUwppbmRleCA5NzQ1YzE0Li42YmQ4ODUyIDEwMDY0NAotLS0gYS9ib2FyZC9wY3M0NDBlcC9pbml0LlMKKysrIGIvYm9hcmQvcGNzNDQwZXAvaW5pdC5TCkBAIC0yMSw2ICsyMSw3IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPHBwY19hc20udG1wbD4KICNpbmNsdWRlIDxhc20vbW11Lmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CmRpZmYgLS1naXQgYS9ib2FyZC9wbGViMi9NYWtlZmlsZSBiL2JvYXJkL3BsZWIyL01ha2VmaWxlCmluZGV4IGZhYTI2OTEuLmNiMGMzZDcgMTAwNjQ0Ci0tLSBhL2JvYXJkL3BsZWIyL01ha2VmaWxlCisrKyBiL2JvYXJkL3BsZWIyL01ha2VmaWxlCkBAIC0yNywxNyArMjcsMTUgQEAKIExJQgk9ICQob2JqKWxpYiQoQk9BUkQpLmEKIAogQ09CSlMJOj0gcGxlYjIubyBmbGFzaC5vCi1TT0JKUwk6PSBsb3dsZXZlbF9pbml0Lm8KIAotU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQorU1JDUwk6PSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCi1TT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCiAKLSQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQogCiBjbGVhbjoKLQlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCisJcm0gLWYgJChPQkpTKQogCiBkaXN0Y2xlYW46CWNsZWFuCiAJcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgJChvYmopLmRlcGVuZApkaWZmIC0tZ2l0IGEvYm9hcmQvcGxlYjIvY29uZmlnLm1rIGIvYm9hcmQvcGxlYjIvY29uZmlnLm1rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzlmNThlLi4wMDAwMDAwCi0tLSBhL2JvYXJkL3BsZWIyL2NvbmZpZy5taworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQ09ORklHX1NZU19URVhUX0JBU0UgPSAgMHhhMUY4MDAwMAotI0NPTkZJR19TWVNfVEVYVF9CQVNFID0gMHhhMzA4MDAwMAotI0NPTkZJR19TWVNfVEVYVF9CQVNFID0gMApkaWZmIC0tZ2l0IGEvYm9hcmQvcGxlYjIvbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvcGxlYjIvbG93bGV2ZWxfaW5pdC5TCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTVmZjljLi4wMDAwMDAwCi0tLSBhL2JvYXJkL3BsZWIyL2xvd2xldmVsX2luaXQuUworKysgL2Rldi9udWxsCkBAIC0xLDQ4OCArMCwwIEBACi0vKgotICogTW9zdCBvZiB0aGlzIHRha2VuIGZyb20gUmVkYm9vdCBoYWxfcGxhdGZvcm1fc2V0dXAuaCB3aXRoIGNsZWFudXAKLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0jaW5jbHVkZSA8dmVyc2lvbi5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+Ci0KLURSQU1fU0laRTogIC5sb25nICAgQ09ORklHX1NZU19EUkFNX1NJWkUKLQotLyogd2FpdCBmb3IgY29wcm9jZXNzb3Igd3JpdGUgY29tcGxldGUgKi8KLQkubWFjcm8gQ1BXQUlUIHJlZwotCW1yYwlwMTUsMCxccmVnLGMyLGMwLDAKLQltb3YJXHJlZyxccmVnCi0Jc3ViCXBjLHBjLCM0Ci0JLmVuZG0KLQotLmdsb2JsIGxvd2xldmVsX2luaXQKLWxvd2xldmVsX2luaXQ6Ci0KLQltb3YJcjEwLCBscgotCi0JLyogU2V0IHVwIEdQSU8gcGlucyBmaXJzdCAqLwotCi0JbGRyCXIwLCAgID1HUFNSMAotCWxkcglyMSwgICA9Q09ORklHX1NZU19HUFNSMF9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HUFNSMQotCWxkcglyMSwgICA9Q09ORklHX1NZU19HUFNSMV9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HUFNSMgotCWxkcglyMSwgICA9Q09ORklHX1NZU19HUFNSMl9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HUENSMAotCWxkcglyMSwgICA9Q09ORklHX1NZU19HUENSMF9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HUENSMQotCWxkcglyMSwgICA9Q09ORklHX1NZU19HUENSMV9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HUENSMgotCWxkcglyMSwgICA9Q09ORklHX1NZU19HUENSMl9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HUkVSMAotCWxkcglyMSwgICA9Q09ORklHX1NZU19HUkVSMF9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HUkVSMQotCWxkcglyMSwgICA9Q09ORklHX1NZU19HUkVSMV9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HUkVSMgotCWxkcglyMSwgICA9Q09ORklHX1NZU19HUkVSMl9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HRkVSMAotCWxkcglyMSwgICA9Q09ORklHX1NZU19HRkVSMF9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HRkVSMQotCWxkcglyMSwgICA9Q09ORklHX1NZU19HRkVSMV9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HRkVSMgotCWxkcglyMSwgICA9Q09ORklHX1NZU19HRkVSMl9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HUERSMAotCWxkcglyMSwgICA9Q09ORklHX1NZU19HUERSMF9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HUERSMQotCWxkcglyMSwgICA9Q09ORklHX1NZU19HUERSMV9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HUERSMgotCWxkcglyMSwgICA9Q09ORklHX1NZU19HUERSMl9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HQUZSMF9MCi0JbGRyCXIxLCAgID1DT05GSUdfU1lTX0dBRlIwX0xfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R0FGUjBfVQotCWxkcglyMSwgICA9Q09ORklHX1NZU19HQUZSMF9VX1ZBTAotCXN0cglyMSwgICBbcjBdCi0KLQlsZHIJcjAsICAgPUdBRlIxX0wKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR0FGUjFfTF9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HQUZSMV9VCi0JbGRyCXIxLCAgID1DT05GSUdfU1lTX0dBRlIxX1VfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R0FGUjJfTAotCWxkcglyMSwgICA9Q09ORklHX1NZU19HQUZSMl9MX1ZBTAotCXN0cglyMSwgICBbcjBdCi0KLQlsZHIJcjAsICAgPUdBRlIyX1UKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR0FGUjJfVV9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JLyogZW5hYmxlIEdQSU8gcGlucyAqLwotCWxkcglyMCwgICA9UFNTUgotCWxkcglyMSwgICA9Q09ORklHX1NZU19QU1NSX1ZBTAotCXN0cglyMSwgICBbcjBdCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgIEluaXRsaWFsaXplIE1lbW9yeSBDb250cm9sbGVyCi0KLSAgICBTZWUgUFhBMjUwIE9wZXJhdGluZyBTeXN0ZW0gRGV2ZWxvcGVyJ3MgR3VpZGUKLQotICAgIHBhdXNlIGZvciAyMDAgdVNlY3MtIGFsbG93IGludGVybmFsIGNsb2NrcyB0byBzZXR0bGUKLSAgICAqTm90ZTogb25seSBuZWVkIHRoaXMgaWYgaGFyZCByZXNldC4uLiBkb2luZyBpdCBhbnl3YXkgZm9yIG5vdwotKi8KLQotCUAgU3RlcCAxCi0JQCAtLS0tIFdhaXQgMjAwIHVzZWMKLQlsZHIJcjMsID1PU0NSCUAgcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8KLQltb3YJcjIsICMwCi0Jc3RyCXIyLCBbcjNdCi0JbGRyCXI0LCA9MHgzMDAJQCByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eQotMToKLQlsZHIJcjIsIFtyM10KLQljbXAJcjQsIHIyCi0JYmd0CTFiCi0KLW1lbV9pbml0OgotCUAgZ2V0IG1lbW9yeSBjb250cm9sbGVyIGJhc2UgYWRkcmVzcwotCWxkcglyMSwgID1NRU1DX0JBU0UKLQotQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUAgIFN0ZXAgMgotQAotCi0JQCBTdGVwIDJhCi0JQCB3cml0ZSBtc2MwLCByZWFkIGJhY2sgdG8gZW5zdXJlIGRhdGEgbGF0Y2hlcwotCUAKLQlsZHIJcjIsICAgPUNPTkZJR19TWVNfTVNDMF9WQUwKLQlzdHIJcjIsICAgW3IxLCAjTVNDMF9PRkZTRVRdCi0JbGRyCXIyLCAgIFtyMSwgI01TQzBfT0ZGU0VUXQotCi0JQCB3cml0ZSBtc2MxCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTVNDMV9WQUwKLQlzdHIJcjIsICBbcjEsICNNU0MxX09GRlNFVF0KLQlsZHIJcjIsICBbcjEsICNNU0MxX09GRlNFVF0KLQotCUAgd3JpdGUgbXNjMgotCWxkcglyMiwgID1DT05GSUdfU1lTX01TQzJfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTVNDMl9PRkZTRVRdCi0JbGRyCXIyLCAgW3IxLCAjTVNDMl9PRkZTRVRdCi0KLQotQCBTdGVwIDJiCi0JQCB3cml0ZSBtZWNyCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTUVDUl9WQUwKLQlzdHIJcjIsICBbcjEsICNNRUNSX09GRlNFVF0KLQotCUAgd3JpdGUgbWNtZW0wCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTUNNRU0wX1ZBTAotCXN0cglyMiwgIFtyMSwgI01DTUVNMF9PRkZTRVRdCi0KLQlAIHdyaXRlIG1jbWVtMQotCWxkcglyMiwgID1DT05GSUdfU1lTX01DTUVNMV9WQUwKLQlzdHIJcjIsICBbcjEsICNNQ01FTTFfT0ZGU0VUXQotCi0JQCB3cml0ZSBtY2F0dDAKLQlsZHIJcjIsICA9Q09ORklHX1NZU19NQ0FUVDBfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTUNBVFQwX09GRlNFVF0KLQotCUAgd3JpdGUgbWNhdHQxCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTUNBVFQxX1ZBTAotCXN0cglyMiwgIFtyMSwgI01DQVRUMV9PRkZTRVRdCi0KLQlAIHdyaXRlIG1jaW8wCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTUNJTzBfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTUNJTzBfT0ZGU0VUXQotCi0JQCB3cml0ZSBtY2lvMQotCWxkcglyMiwgID1DT05GSUdfU1lTX01DSU8xX1ZBTAotCXN0cglyMiwgIFtyMSwgI01DSU8xX09GRlNFVF0KLQotQCBTdGVwIDJjCi0JQCBmbHktYnktZG1hIGlzIGRlZmVhdHVyZWQgb24gdGhpcyBwYXJ0Ci0JQCB3cml0ZSBmbHljbmZnCi0JQGxkcglyMiwgID1DT05GSUdfU1lTX0ZMWUNORkdfVkFMCi0JQHN0cglyMiwgIFtyMSwgI0ZMWUNORkdfT0ZGU0VUXQotCi0vKiBGSVhNRSBEb2VzIHRoaXMgc2VxdWVuY2UgcmVhbGx5IG1ha2Ugc2Vuc2UgKi8KLSNpZmRlZiBSRURCT09UX1dBWQotCUAgU3RlcCAyZAotCUAgZ2V0IHRoZSBtZHJlZnIgc2V0dGluZ3MKLQlsZHIJcjMsICA9Q09ORklHX1NZU19NRFJFRlJfVkFMCi0KLQlAIGV4dHJhY3QgRFJJIGZpZWxkICh3ZSBuZWVkIGEgdmFsaWQgRFJJIGZpZWxkKQotCUAKLQlsZHIJcjIsICA9MHhGRkYKLQotCUAgdmFsaWQgRFJJIGZpZWxkIGluIHIzCi0JQAotCWFuZAlyMywgIHIzLCAgcjIKLQotCUAgZ2V0IHRoZSByZXNldCBzdGF0ZSBvZiBNRFJFRlIKLQlACi0JbGRyCXI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCUAgY2xlYXIgdGhlIERSSSBmaWVsZAotCUAKLQliaWMJcjQsICByNCwgIHIyCi0KLQlAIGluc2VydCB0aGUgdmFsaWQgRFJJIGZpZWxkIGxvYWRlZCBhYm92ZQotCUAKLQlvcnIJcjQsICByNCwgIHIzCi0KLQlAIHdyaXRlIGJhY2sgbWRyZWZyCi0JQAotCXN0cglyNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQlAICpOb3RlOiBwcmVzZXJ2ZSB0aGUgbWRyZWZyIHZhbHVlIGluIHI0ICoKLQotQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUAgIFN0ZXAgMwotQAotQCBOTyBTUkFNCi0KLQltb3YJcGMsIHIxMAotCi0KLUAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1AICBTdGVwIDQKLUAKLQotCUAgQXNzdW1lcyBwcmV2aW91cyBtZHJlZnIgdmFsdWUgaW4gcjQsIGlmIG5vdCB0aGVuIHJlYWQgY3VycmVudCBtZHJlZnIKLQotCUAgY2xlYXIgdGhlIGZyZWUtcnVubmluZyBjbG9jayBiaXRzCi0JQCAoY2xlYXIgSzBGcmVlLCBLMUZyZWUsIEsyRnJlZQotCUAKLQliaWMJcjQsICByNCwgICMoMHgwMDgwMDAwMCB8IDB4MDEwMDAwMDAgfCAweDAyMDAwMDAwKQotCi0JQCBzZXQgSzBSVU4gZm9yIENQTEQgY2xvY2sKLQlACi0Jb3JyCXI0LCAgcjQsICAjMHgwMDAwMjAwMAotCi0JQCBzZXQgSzFSVU4gaWYgYmFuayAwIGluc3RhbGxlZAotCUAKLQlvcnIJcjQsICByNCwgICMweDAwMDEwMDAwCi0KLQlAIHdyaXRlIGJhY2sgbWRyZWZyCi0JQAotCXN0cglyNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0JbGRyCXI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCUAgZGVhc3NlcnQgU0xGUlNICi0JQAotCWJpYwlyNCwgIHI0LCAgIzB4MDA0MDAwMDAKLQotCUAgd3JpdGUgYmFjayBtZHJlZnIKLQlACi0Jc3RyCXI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCUAgYXNzZXJ0IEUxUElOCi0JQAotCW9ycglyNCwgIHI0LCAgIzB4MDAwMDgwMDAKLQotCUAgd3JpdGUgYmFjayBtZHJlZnIKLQlACi0Jc3RyCXI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQlsZHIJcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCW5vcAotCW5vcAotI2Vsc2UKLQlAIFN0ZXAgMmQKLQlAIGdldCB0aGUgbWRyZWZyIHNldHRpbmdzCi0JbGRyCXIzLCAgPUNPTkZJR19TWVNfTURSRUZSX1ZBTAotCi0JQCB3cml0ZSBiYWNrIG1kcmVmcgotCUAKLQlzdHIJcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0JQCAgU3RlcCA0Ci0KLQlAIHNldCBLMFJVTiBmb3IgQ1BMRCBjbG9jawotCUAKLQlvcnIJcjQsICByNCwgICMweDAwMDAyMDAwCi0KLQlAIHNldCBLMVJVTiBmb3IgYmFuayAwCi0JQAotCW9ycglyNCwgIHI0LCAgIzB4MDAwMTAwMDAKLQotCUAgd3JpdGUgYmFjayBtZHJlZnIKLQlACi0Jc3RyCXI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQlsZHIJcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0JQCBkZWFzc2VydCBTTEZSU0gKLQlACi0JYmljCXI0LCAgcjQsICAjMHgwMDQwMDAwMAotCi0JQCB3cml0ZSBiYWNrIG1kcmVmcgotCUAKLQlzdHIJcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0JQCBhc3NlcnQgRTFQSU4KLQlACi0Jb3JyCXI0LCAgcjQsICAjMHgwMDAwODAwMAotCi0JQCB3cml0ZSBiYWNrIG1kcmVmcgotCUAKLQlzdHIJcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCWxkcglyNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0Jbm9wCi0Jbm9wCi0jZW5kaWYKLQotCUAgU3RlcCA0ZAotCUAgZmV0Y2ggcGxhdGZvcm0gdmFsdWUgb2YgbWRjbmZnCi0JQAotCWxkcglyMiwgID1DT05GSUdfU1lTX01EQ05GR19WQUwKLQotCUAgZGlzYWJsZSBhbGwgc2RyYW0gYmFua3MKLQlACi0JYmljCXIyLCAgcjIsICAjKE1EQ05GR19ERTAgfCBNRENORkdfREUxKQotCWJpYwlyMiwgIHIyLCAgIyhNRENORkdfREUyIHwgTURDTkZHX0RFMykKLQotCUAgcHJvZ3JhbSBiYW5rcyAwLzEgZm9yIGJ1cyB3aWR0aAotCUAKLQliaWMJcjIsICByMiwgICNNRENORkdfRFdJRDAJICAgICBAMD0zMi1iaXQKLQotCUAgd3JpdGUgaW5pdGlhbCB2YWx1ZSBvZiBtZGNuZmcsIHcvbyBlbmFibGluZyBzZHJhbSBiYW5rcwotCUAKLQlzdHIJcjIsICBbcjEsICNNRENORkdfT0ZGU0VUXQotCi0JQCBTdGVwIDRlCi0JQCBwYXVzZSBmb3IgMjAwIHVTZWNzCi0JQAotCWxkcglyMywgPU9TQ1IJQCByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybwotCW1vdglyMiwgIzAKLQlzdHIJcjIsIFtyM10KLQlsZHIJcjQsID0weDMwMAkJCUAgcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsIHNvIDB4MzAwIHNob3VsZCBiZSBwbGVudHkKLQkxOgotCWxkcglyMiwgW3IzXQotCWNtcAlyNCwgcjIKLQliZ3QJMWIKLQotCS8qIFdoeSBpcyB0aGlzIGhlcmU/Pz8gKi8KLQltb3YJcjAsICMweDc4CQkgQHR1cm4gZXZlcnl0aGluZyBvZmYKLQltY3IJcDE1LCAwLCByMCwgYzEsIGMwLCAwCSAgIEAoY2FjaGVzIG9mZiwgTU1VIG9mZiwgZXRjLikKLQotCUAgU3RlcCA0ZgotCUAgQWNjZXNzIG1lbW9yeSAqbm90IHlldCBlbmFibGVkKiBmb3IgQ0JSIHJlZnJlc2ggY3ljbGVzICg4KQotCUAgLSBDQlIgaXMgZ2VuZXJhdGVkIGZvciBhbGwgYmFua3MKLQotCWxkcglyMiwgPUNPTkZJR19TWVNfRFJBTV9CQVNFCi0Jc3RyCXIyLCBbcjJdCi0Jc3RyCXIyLCBbcjJdCi0Jc3RyCXIyLCBbcjJdCi0Jc3RyCXIyLCBbcjJdCi0Jc3RyCXIyLCBbcjJdCi0Jc3RyCXIyLCBbcjJdCi0Jc3RyCXIyLCBbcjJdCi0Jc3RyCXIyLCBbcjJdCi0KLQlAIFN0ZXAgNGcKLQlAZ2V0IG1lbW9yeSBjb250cm9sbGVyIGJhc2UgYWRkcmVzcwotCUAKLQlsZHIJcjEsICA9TUVNQ19CQVNFCi0KLQlAZmV0Y2ggY3VycmVudCBtZGNuZmcgdmFsdWUKLQlACi0JbGRyCXIzLCAgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotCUBlbmFibGUgc2RyYW0gYmFuayAwIGlmIGluc3RhbGxlZCAobXVzdCBkbyBmb3IgYW55IHBvcHVsYXRlZCBiYW5rKQotCUAKLQlvcnIJcjMsICByMywgICNNRENORkdfREUwCi0KLQlAd3JpdGUgYmFjayBtZGNuZmcsIGVuYWJsaW5nIHRoZSBzZHJhbSBiYW5rKHMpCi0JQAotCXN0cglyMywgIFtyMSwgI01EQ05GR19PRkZTRVRdCi0KLQlAIFN0ZXAgNGgKLQlAIHdyaXRlIG1kbXJzCi0JQAotCWxkcglyMiwgID1DT05GSUdfU1lTX01ETVJTX1ZBTAotCXN0cglyMiwgIFtyMSwgI01ETVJTX09GRlNFVF0KLQotCUAgRG9uZSBNZW1vcnkgSW5pdAotCi0JLypTRVRfTEVEIDYgKi8KLQotCUAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCUAgRGlzYWJsZSAobWFzaykgYWxsIGludGVycnVwdHMgYXQgdGhlIGludGVycnVwdCBjb250cm9sbGVyCi0JQAotCi0JQCBjbGVhciB0aGUgaW50ZXJydXB0IGxldmVsIHJlZ2lzdGVyICh1c2UgSVJRLCBub3QgRklRKQotCUAKLQltb3YJcjEsICMwCi0JbGRyCXIyLCAgPUlDTFIKLQlzdHIJcjEsICBbcjJdCi0KLQlAIFNldCBpbnRlcnJ1cHQgbWFzayByZWdpc3RlcgotCUAKLQlsZHIJcjEsICA9Q09ORklHX1NZU19JQ01SX1ZBTAotCWxkcglyMiwgID1JQ01SCi0Jc3RyCXIxLCAgW3IyXQotCi0JQCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCUAgRGlzYWJsZSB0aGUgcGVyaXBoZXJhbCBjbG9ja3MsIGFuZCBzZXQgdGhlIGNvcmUgY2xvY2sKLQlACi0KLQlAIFR1cm4gT2ZmIEFMTCBvbi1jaGlwIHBlcmlwaGVyYWwgY2xvY2tzIGZvciByZS1jb25maWd1cmF0aW9uCi0JQAotCWxkcglyMSwgID1DS0VOCi0JbW92CXIyLCAgIzAKLQlzdHIJcjIsICBbcjFdCi0KLQlAIHNldCBjb3JlIGNsb2NrcwotCUAKLQlsZHIJcjIsICA9Q09ORklHX1NZU19DQ0NSX1ZBTAotCWxkcglyMSwgID1DQ0NSCi0Jc3RyCXIyLCAgW3IxXQotCi0JI2lmZGVmIEVOQUJMRTMyS0haCi0JQCBlbmFibGUgdGhlIDMyS2h6IG9zY2lsbGF0b3IgZm9yIFJUQyBhbmQgUG93ZXJNYW5hZ2VyCi0JQAotCWxkcglyMSwgID1PU0NDCi0JbW92CXIyLCAgI09TQ0NfT09OCi0Jc3RyCXIyLCAgW3IxXQotCi0JQCBOT1RFOgkgc3BpbiBoZXJlIHVudGlsIE9TQ0MuT09LIGdldCBzZXQsCi0JQAkgbWVhbmluZyB0aGUgUExMIGhhcyBzZXR0bGVkLgotCUAKLTYwOgotCWxkcglyMiwgW3IxXQotCWFuZHMJcjIsIHIyLCAjMQotCWJlcQk2MGIKLSNlbmRpZgotCi0JQCBUdXJuIG9uIG5lZWRlZCBjbG9ja3MKLQlACi0JbGRyCXIxLCAgPUNLRU4KLQlsZHIJcjIsICA9Q09ORklHX1NZU19DS0VOX1ZBTAotCXN0cglyMiwgIFtyMV0KLQotCS8qU0VUX0xFRCA3ICovCi0KLS8qIElzIHRoaXMgbmVlZGVkPz8/PyAqLwotI2RlZmluZSBOT0RFQlVHCi0jaWZkZWYgTk9ERUJVRwotICAgLypEaXNhYmxlIHNvZnR3YXJlIGFuZCBkYXRhIGJyZWFrcG9pbnRzICovCi0JbW92CXIwLCMwCi0JbWNyCXAxNSwwLHIwLGMxNCxjOCwwICAvKiBpYmNyMCAqLwotCW1jcglwMTUsMCxyMCxjMTQsYzksMCAgLyogaWJjcjEgKi8KLQltY3IJcDE1LDAscjAsYzE0LGM0LDAgIC8qIGRiY29uICovCi0KLQkvKkVuYWJsZSBhbGwgZGVidWcgZnVuY3Rpb25hbGl0eSAqLwotCW1vdglyMCwjMHg4MDAwMDAwMAotCW1jcglwMTQsMCxyMCxjMTAsYzAsMCAgLyogZGNzciAqLwotCi0jZW5kaWYKLQotCW1vdglwYywgcjEwCi0KLUAgRW5kIGxvd2xldmVsX2luaXQKZGlmZiAtLWdpdCBhL2JvYXJkL3BsZWIyL3BsZWIyLmMgYi9ib2FyZC9wbGViMi9wbGViMi5jCmluZGV4IDk3YzM3ZWEuLjVhMTZjYzcgMTAwNjQ0Ci0tLSBhL2JvYXJkL3BsZWIyL3BsZWIyLmMKKysrIGIvYm9hcmQvcGxlYjIvcGxlYjIuYwpAQCAtMzYsOCArMzYsOSBAQAogCiBpbnQgYm9hcmRfaW5pdCAodm9pZCkKIHsKLQkvKiBtZW1vcnkgYW5kIGNwdS1zcGVlZCBhcmUgc2V0dXAgYmVmb3JlIHJlbG9jYXRpb24gKi8KLQkvKiBzbyB3ZSBkbyBfbm90aGluZ18gaGVyZSAqLworCS8qIFdlIGhhdmUgUkFNLCBkaXNhYmxlIGNhY2hlICovCisJZGNhY2hlX2Rpc2FibGUoKTsKKwlpY2FjaGVfZGlzYWJsZSgpOwogCiAJLyogYXJjaCBudW1iZXIgb2YgTHViYm9jay1Cb2FyZCAqLwogCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSBNQUNIX1RZUEVfUExFQjI7CkBAIC01NSwxNyArNTYsMTYgQEAKIAlyZXR1cm4gMDsKIH0KIAorZXh0ZXJuIHZvaWQgcHhhX2RyYW1faW5pdCh2b2lkKTsKK2ludCBkcmFtX2luaXQodm9pZCkKK3sKKwlweGFfZHJhbV9pbml0KCk7CisJZ2QtPnJhbV9zaXplID0gUEhZU19TRFJBTV8xX1NJWkU7CisJcmV0dXJuIDA7Cit9CiAKLWludCBkcmFtX2luaXQgKHZvaWQpCit2b2lkIGRyYW1faW5pdF9iYW5rc2l6ZSh2b2lkKQogewogCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKIAlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVsxXS5zdGFydCA9IFBIWVNfU0RSQU1fMjsKLQlnZC0+YmQtPmJpX2RyYW1bMV0uc2l6ZSA9IFBIWVNfU0RSQU1fMl9TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVsyXS5zdGFydCA9IFBIWVNfU0RSQU1fMzsKLQlnZC0+YmQtPmJpX2RyYW1bMl0uc2l6ZSA9IFBIWVNfU0RSQU1fM19TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVszXS5zdGFydCA9IFBIWVNfU0RSQU1fNDsKLQlnZC0+YmQtPmJpX2RyYW1bM10uc2l6ZSA9IFBIWVNfU0RSQU1fNF9TSVpFOwotCi0JcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9ib2FyZC9wcm9kcml2ZS9hbHByL2luaXQuUyBiL2JvYXJkL3Byb2RyaXZlL2FscHIvaW5pdC5TCmluZGV4IDExOWJjNTMuLmQ5OTYxZGQgMTAwNjQ0Ci0tLSBhL2JvYXJkL3Byb2RyaXZlL2FscHIvaW5pdC5TCisrKyBiL2JvYXJkL3Byb2RyaXZlL2FscHIvaW5pdC5TCkBAIC0yMSw2ICsyMSw3IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPHBwY19hc20udG1wbD4KICNpbmNsdWRlIDxhc20vbW11Lmg+CiAjaW5jbHVkZSA8Y29uZmlnLmg+CmRpZmYgLS1naXQgYS9ib2FyZC9weGEyNTVfaWRwL01ha2VmaWxlIGIvYm9hcmQvcHhhMjU1X2lkcC9NYWtlZmlsZQppbmRleCA0ODkyYjQyLi4yODM1ZjM3IDEwMDY0NAotLS0gYS9ib2FyZC9weGEyNTVfaWRwL01ha2VmaWxlCisrKyBiL2JvYXJkL3B4YTI1NV9pZHAvTWFrZWZpbGUKQEAgLTI3LDE3ICsyNywxNSBAQAogTElCCT0gJChvYmopbGliJChCT0FSRCkuYQogCiBDT0JKUwk6PSBweGFfaWRwLm8KLVNPQkpTCTo9IGxvd2xldmVsX2luaXQubwogCi1TUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCitTUkNTCTo9ICQoQ09CSlM6Lm89LmMpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKLVNPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKIAotJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChTT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAKIGNsZWFuOgotCXJtIC1mICQoU09CSlMpICQoT0JKUykKKwlybSAtZiAkKE9CSlMpCiAKIGRpc3RjbGVhbjoJY2xlYW4KIAlybSAtZiAkKExJQikgY29yZSAqLmJhayAkKG9iaikuZGVwZW5kCmRpZmYgLS1naXQgYS9ib2FyZC9weGEyNTVfaWRwL2NvbmZpZy5tayBiL2JvYXJkL3B4YTI1NV9pZHAvY29uZmlnLm1rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzBmNjk1Li4wMDAwMDAwCi0tLSBhL2JvYXJkL3B4YTI1NV9pZHAvY29uZmlnLm1rCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jQ09ORklHX1NZU19URVhUX0JBU0UgPSAweGExNzAwMDAwCi1DT05GSUdfU1lTX1RFWFRfQkFTRSA9IDB4YTMwODAwMDAKLSNDT05GSUdfU1lTX1RFWFRfQkFTRSA9IDAKZGlmZiAtLWdpdCBhL2JvYXJkL3B4YTI1NV9pZHAvbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvcHhhMjU1X2lkcC9sb3dsZXZlbF9pbml0LlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MDc2MGYuLjAwMDAwMDAKLS0tIGEvYm9hcmQvcHhhMjU1X2lkcC9sb3dsZXZlbF9pbml0LlMKKysrIC9kZXYvbnVsbApAQCAtMSw0OTYgKzAsMCBAQAotLyoKLSAqIE1vc3Qgb2YgdGhpcyB0YWtlbiBmcm9tIFJlZGJvb3QgaGFsX3BsYXRmb3JtX3NldHVwLmggd2l0aCBjbGVhbnVwCi0gKgotICogTk9URTogSSBoYXZlbid0IGNsZWFuIHRoaXMgdXAgY29uc2lkZXJhYmx5LCBqdXN0IGVub3VnaCB0byBnZXQgaXQKLSAqIHJ1bm5pbmcuIFNlZSBoYWxfcGxhdGZvcm1fc2V0dXAuaCBmb3IgdGhlIHNvdXJjZS4gU2VlCi0gKiBib2FyZC9jcmFkbGUvbG93bGV2ZWxfaW5pdC5TIGZvciBhbm90aGVyIFBYQTI1MCBzZXR1cCB0aGF0IGlzCi0gKiBtdWNoIGNsZWFuZXIuCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2luY2x1ZGUgPHZlcnNpb24uaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgotCi1EUkFNX1NJWkU6ICAubG9uZyAgIENPTkZJR19TWVNfRFJBTV9TSVpFCi0KLS8qIHdhaXQgZm9yIGNvcHJvY2Vzc29yIHdyaXRlIGNvbXBsZXRlICovCi0JLm1hY3JvIENQV0FJVCByZWcKLQltcmMgIHAxNSwwLFxyZWcsYzIsYzAsMAotCW1vdiAgXHJlZyxccmVnCi0Jc3ViICBwYyxwYywjNAotCS5lbmRtCi0KLS8qCi0gKglNZW1vcnkgc2V0dXAKLSAqLwotLmdsb2JsIGxvd2xldmVsX2luaXQKLWxvd2xldmVsX2luaXQ6Ci0KLQltb3YgICAgICByMTAsIGxyCi0KLSNpZmRlZiBERUJVR19CTElOS19FTkFCTEUKLQkvKiAzcmQgYmxpbmsgKi8KLQlibAlibGluawotI2VuZGlmCi0KLQkvKiBTZXQgdXAgR1BJTyBwaW5zIGZpcnN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JbGRyCQlyMCwJPUdQU1IwCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BTUjBfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BTUjEKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUFNSMV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUFNSMgotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQU1IyX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQQ1IwCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BDUjBfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BDUjEKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUENSMV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUENSMgotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQQ1IyX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQRFIwCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BEUjBfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BEUjEKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUERSMV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUERSMgotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQRFIyX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIwX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMF9MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIwX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMF9VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIxX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMV9MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIxX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMV9VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIyX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMl9MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIyX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMl9VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCXIwLAk9UFNTUgkJLyogZW5hYmxlIEdQSU8gcGlucyAqLwotCWxkcgkJcjEsCT1DT05GSUdfU1lTX1BTU1JfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLSNpZmRlZiBERUJVR19CTElOS19FTkFCTEUKLQkvKiA0dGggZGVidWcgYmxpbmsgKi8KLQlibAlibGluawotI2VuZGlmCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogRW5hYmxlIG1lbW9yeSBpbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiBUaGUgc2VxdWVuY2UgYmVsb3cgaXMgYmFzZWQgb24gdGhlIHJlY29tbWVuZGVkIGluaXQgc3RlcHMgICAgICAgICovCi0JLyogZGV0YWlsZWQgaW4gdGhlIEludGVsIFBYQTI1MCBPcGVyYXRpbmcgU3lzdGVtcyBEZXZlbG9wZXJzIEd1aWRlLCAqLwotCS8qIENoYXB0ZXIgMTAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAxOiBXYWl0IGZvciBhdCBsZWFzdCAyMDAgbWljcm9zZWRvbmRzIHRvIGFsbG93IGludGVybmFsICAgICAqLwotCS8qICAgICAgICAgY2xvY2tzIHRvIHNldHRsZS4gT25seSBuZWNlc3NhcnkgYWZ0ZXIgaGFyZCByZXNldC4uLiAgICAgKi8KLQkvKiAgICAgICAgIEZJWE1FOiBjYW4gYmUgb3B0aW1pemVkIGxhdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JbGRyIHIzLCA9T1NDUgkJCS8qIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvICovCi0JbW92IHIyLCAjMAotCXN0ciByMiwgW3IzXQotCWxkciByNCwgPTB4MzAwCQkJLyogcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsICAgKi8KLQkJCQkJLyogc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eSAgICAgICAgKi8KLTE6Ci0JbGRyIHIyLCBbcjNdCi0JY21wIHI0LCByMgotCWJndCAxYgotCi1tZW1faW5pdDoKLQotCWxkciAgICAgcjEsICA9TUVNQ19CQVNFCQkvKiBnZXQgbWVtb3J5IGNvbnRyb2xsZXIgYmFzZSBhZGRyLiAqLwotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMmE6IEluaXRpYWxpemUgQXN5bmNocm9ub3VzIHN0YXRpYyBtZW1vcnkgY29udHJvbGxlciAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBNU0MgcmVnaXN0ZXJzOiB0aW1pbmcsIGJ1cyB3aWR0aCwgbWVtIHR5cGUgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQkvKiBNU0MwOiBuQ1MoMCwxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiwgICA9Q09ORklHX1NZU19NU0MwX1ZBTAotCXN0ciAgICAgcjIsICAgW3IxLCAjTVNDMF9PRkZTRVRdCi0JbGRyICAgICByMiwgICBbcjEsICNNU0MwX09GRlNFVF0JLyogcmVhZCBiYWNrIHRvIGVuc3VyZSAgICAgICovCi0JCQkJCQkvKiB0aGF0IGRhdGEgbGF0Y2hlcyAgICAgICAgKi8KLQkvKiBNU0MxOiBuQ1MoMiwzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiwgID1DT05GSUdfU1lTX01TQzFfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01TQzFfT0ZGU0VUXQotCWxkciAgICAgcjIsICBbcjEsICNNU0MxX09GRlNFVF0KLQotCS8qIE1TQzI6IG5DUyg0LDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTVNDMl9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTVNDMl9PRkZTRVRdCi0JbGRyICAgICByMiwgIFtyMSwgI01TQzJfT0ZGU0VUXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMmI6IEluaXRpYWxpemUgQ2FyZCBJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBNRUNSOiBNZW1vcnkgRXhwYW5zaW9uIENhcmQgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiwgID1DT05GSUdfU1lTX01FQ1JfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01FQ1JfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUVDUl9PRkZTRVRdCi0KLQkvKiBNQ01FTTA6IENhcmQgSW50ZXJmYWNlIHNsb3QgMCB0aW1pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiwgID1DT05GSUdfU1lTX01DTUVNMF9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTUNNRU0wX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01DTUVNMF9PRkZTRVRdCi0KLQkvKiBNQ01FTTE6IENhcmQgSW50ZXJmYWNlIHNsb3QgMSB0aW1pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiwgID1DT05GSUdfU1lTX01DTUVNMV9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTUNNRU0xX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01DTUVNMV9PRkZTRVRdCi0KLQkvKiBNQ0FUVDA6IENhcmQgSW50ZXJmYWNlIEF0dHJpYnV0ZSBTcGFjZSBUaW1pbmcsIHNsb3QgMCAgICAgICAgICAgICovCi0JbGRyICAgICByMiwgID1DT05GSUdfU1lTX01DQVRUMF9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTUNBVFQwX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01DQVRUMF9PRkZTRVRdCi0KLQkvKiBNQ0FUVDE6IENhcmQgSW50ZXJmYWNlIEF0dHJpYnV0ZSBTcGFjZSBUaW1pbmcsIHNsb3QgMSAgICAgICAgICAgICovCi0JbGRyICAgICByMiwgID1DT05GSUdfU1lTX01DQVRUMV9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTUNBVFQxX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01DQVRUMV9PRkZTRVRdCi0KLQkvKiBNQ0lPMDogQ2FyZCBJbnRlcmZhY2UgSS9PIFNwYWNlIFRpbWluZywgc2xvdCAwICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiwgID1DT05GSUdfU1lTX01DSU8wX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNQ0lPMF9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ0lPMF9PRkZTRVRdCi0KLQkvKiBNQ0lPMTogQ2FyZCBJbnRlcmZhY2UgSS9PIFNwYWNlIFRpbWluZywgc2xvdCAxICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiwgID1DT05GSUdfU1lTX01DSU8xX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNQ0lPMV9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ0lPMV9PRkZTRVRdCi0KLSNpZmRlZiBERUJVR19CTElOS19FTkFCTEUKLQkvKiA1dGggYmxpbmsgKi8KLQlibAlibGluawotI2VuZGlmCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAyYzogV3JpdGUgRkxZQ05GRyAgRklYTUU6IHdoYXQncyB0aGF0Pz8/ICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJkOiBJbml0aWFsaXplIFRpbWluZyBmb3IgU3luYyBNZW1vcnkgKFNEQ0xLMCkgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogQmVmb3JlIGFjY2Vzc2luZyBNRFJFRlIgd2UgbmVlZCBhIHZhbGlkIERSSSBmaWVsZCwgc28gd2Ugc2V0ICAgICAqLwotCS8qIHRoaXMgdG8gcG93ZXIgb24gZGVmYXVsdHMgKyBEUkkgZmllbGQuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCWxkciAgICAgcjMsICAgICA9Q09ORklHX1NZU19NRFJFRlJfVkFMCi0JbGRyICAgICByMiwgICAgID0weEZGRgotCWFuZCAgICAgcjMsICAgICByMywgIHIyCi0JbGRyCXI0LAk9MHgwM2NhNDAwMAotCW9yciAgICAgcjQsICAgICByNCwgIHIzCi0Jc3RyCXI0LAlbcjEsICNNRFJFRlJfT0ZGU0VUXQkvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KLQlsZHIgICAgIHI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCS8qIE5vdGU6IHByZXNlcnZlIHRoZSBtZHJlZnIgdmFsdWUgaW4gcjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDM6IEluaXRpYWxpemUgU3luY2hyb25vdXMgU3RhdGljIE1lbW9yeSAoRmxhc2gvUGVyaXBoZXJhbHMpICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogSW5pdGlhbGl6ZSBTWENORkcgcmVnaXN0ZXIuIEFzc2VydCB0aGUgZW5hYmxlIGJpdHMgICAgICAgICAgICAgICAqLwotCi0JLyogV3JpdGUgU1hNUlMgdG8gY2F1c2UgYW4gTVJTIGNvbW1hbmQgdG8gYWxsIGVuYWJsZWQgYmFua3Mgb2YgICAgICAqLwotCS8qIHN5bmNocm9ub3VzIHN0YXRpYyBtZW1vcnkuIE5vdGUgdGhhdCBTWExDUiBuZWVkIG5vdCBiZSB3cml0dGVuICAgKi8KLQkvKiBhdCB0aGlzIHRpbWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQkvKiBGSVhNRTogd2UgdXNlIGFzeW5jIG1vZGUgZm9yIG5vdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCA0OiBJbml0aWFsaXplIFNEUkFNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIHNldCBNRFJFRlIgYWNjb3JkaW5nIHRvIHVzZXIgZGVmaW5lIHdpdGggZXhjZXB0aW9uIG9mIGEgZmV3IGJpdHMgKi8KLQotCWxkciAgICAgcjQsICAgICA9Q09ORklHX1NZU19NRFJFRlJfVkFMCi0Jb3JyCXI0LAlyNCwJIyhNRFJFRlJfU0xGUlNIKQotCWJpYwlyNCwJcjQsCSMoTURSRUZSX0UxUElOfE1EUkVGUl9FMFBJTikKLQlzdHIgICAgIHI0LCAgICAgW3IxLCAjTURSRUZSX09GRlNFVF0gICAgLyogd3JpdGUgYmFjayBNRFJFRlIgICAgICAgICovCi0JbGRyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQkvKiBTdGVwIDRiOiBkZS1hc3NlcnQgTURSRUZSOlNMRlJTSC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQliaWMJcjQsCXI0LAkjKE1EUkVGUl9TTEZSU0gpCi0Jc3RyICAgICByNCwgICAgIFtyMSwgI01EUkVGUl9PRkZTRVRdICAgIC8qIHdyaXRlIGJhY2sgTURSRUZSICAgICAgICAqLwotCWxkciAgICAgcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0JLyogU3RlcCA0YzogYXNzZXJ0IE1EUkVGUjpFMVBJTiBhbmQgRTBQSU8gYXMgZGVzaXJlZCAgICAgICAgICAgICAgICAqLwotCi0JbGRyICAgICByNCwgICAgID1DT05GSUdfU1lTX01EUkVGUl9WQUwKLQlzdHIgICAgIHI0LCAgICAgW3IxLCAjTURSRUZSX09GRlNFVF0gICAgLyogd3JpdGUgYmFjayBNRFJFRlIgICAgICAgICovCi0JbGRyICAgICByNCwgICAgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQotCS8qIFN0ZXAgNGQ6IHdyaXRlIE1EQ05GRyB3aXRoIE1EQ05GRzpERXggZGVhc3NlcnRlZCAoc2V0IHRvIDApLCB0byAgKi8KLQkvKiAgICAgICAgICBjb25maWd1cmUgYnV0IG5vdCBlbmFibGUgZWFjaCBTRFJBTSBwYXJ0aXRpb24gcGFpci4gICAgICovCi0KLQlsZHIJcjQsCT1DT05GSUdfU1lTX01EQ05GR19WQUwKLQliaWMJcjQsCXI0LAkjKE1EQ05GR19ERTB8TURDTkZHX0RFMSkKLQotCXN0ciAgICAgcjQsICAgICBbcjEsICNNRENORkdfT0ZGU0VUXQkvKiB3cml0ZSBiYWNrIE1EQ05GRyAgICAgICAgKi8KLQlsZHIgICAgIHI0LCAgICAgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotCS8qIFN0ZXAgNGU6IFdhaXQgZm9yIHRoZSBjbG9jayB0byB0aGUgU0RSQU1zIHRvIHN0YWJpbGl6ZSwgICAgICAgICAgKi8KLQkvKiAgICAgICAgICAxMDAuLjIwMCC1c2VjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQlsZHIgcjMsID1PU0NSCQkJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KLQltb3YgcjIsICMwCi0JICAgIHN0ciByMiwgW3IzXQotCWxkciByNCwgPTB4MzAwCQkJLyogcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsICAgKi8KLQkJCQkJLyogc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eSAgICAgICAgKi8KLTE6Ci0JICAgIGxkciByMiwgW3IzXQotCSAgICBjbXAgcjQsIHIyCi0JICAgIGJndCAxYgotCi0JLyogU3RlcCA0ZjogVHJpZ2dlciBhIG51bWJlciAodXN1YWxseSA4KSByZWZyZXNoIGN5Y2xlcyBieSAgICAgICAgICAqLwotCS8qICAgICAgICAgIGF0dGVtcHRpbmcgbm9uLWJ1cnN0IHJlYWQgb3Igd3JpdGUgYWNjZXNzZXMgdG8gZGlzYWJsZWQgKi8KLQkvKiAgICAgICAgICBTRFJBTSwgYXMgY29tbW9ubHkgc3BlY2lmaWVkIGluIHRoZSBwb3dlciB1cCBzZXF1ZW5jZSAgICovCi0JLyogICAgICAgICAgZG9jdW1lbnRlZCBpbiBTRFJBTSBkYXRhIHNoZWV0cy4gVGhlIGFkZHJlc3MoZXMpIHVzZWQgICAqLwotCS8qICAgICAgICAgIGZvciB0aGlzIHB1cnBvc2UgbXVzdCBub3QgYmUgY2FjaGVhYmxlLiAgICAgICAgICAgICAgICAgKi8KLQotCWxkcglyMywJPUNPTkZJR19TWVNfRFJBTV9CQVNFCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0KLQkvKiBTdGVwIDRnOiBXcml0ZSBNRENORkcgd2l0aCBlbmFibGUgYml0cyBhc3NlcnRlZCAgICAgICAgICAgICAgICAgICovCi0JLyogICAgICAgICAgKE1EQ05GRzpERXggc2V0IHRvIDEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JbGRyICAgICByMywgIFtyMSwgI01EQ05GR19PRkZTRVRdCi0Jb3JyCXIzLAlyMywJIyhNRENORkdfREUwfE1EQ05GR19ERTEpCi0Jc3RyICAgICByMywgIFtyMSwgI01EQ05GR19PRkZTRVRdCi0KLQkvKiBTdGVwIDRoOiBXcml0ZSBNRE1SUy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTURNUlNfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01ETVJTX09GRlNFVF0KLQotCS8qIFdlIGFyZSBmaW5pc2hlZCB3aXRoIEludGVsJ3MgbWVtb3J5IGNvbnRyb2xsZXIgaW5pdGlhbGlzYXRpb24gICAgKi8KLSNpZiAwCi0JLyogRklYTUUgdHVybiBvbiBzZXJpYWwgcG9ydHMgKi8KLQkvKiBsb29rIGludG8gbW92aW5nIHRoaXMgdG8gYm9hcmRfaW5pdCgpICovCi0JbGRyCXIyLCA9KFBYQV9DUzVfUEhZUyArIDB4MDNDMDAwMmMpCi0JbW92CXIzLCAjMHgxMwotCXN0cglyMywgW3IyXQotI2VuZGlmCi0KLSNpZmRlZiBERUJVR19CTElOS19FTkFCTEUKLQkvKiA2dGggYmxpbmsgKi8KLQlibAlibGluawotI2VuZGlmCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogRGlzYWJsZSAobWFzaykgYWxsIGludGVycnVwdHMgYXQgaW50ZXJydXB0IGNvbnRyb2xsZXIgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotaW5pdGlycXM6Ci0KLQltb3YgICAgIHIxLCAjMAkJLyogY2xlYXIgaW50LiBsZXZlbCByZWdpc3RlciAoSVJRLCBub3QgRklRKSAqLwotCWxkciAgICAgcjIsICA9SUNMUgotCXN0ciAgICAgcjEsICBbcjJdCi0KLQlsZHIgICAgIHIyLCAgPUlDTVIJLyogbWFzayBhbGwgaW50ZXJydXB0cyBhdCB0aGUgY29udHJvbGxlciAgICAqLwotCXN0ciAgICAgcjEsICBbcjJdCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogQ2xvY2sgaW5pdGlhbGlzYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotaW5pdGNsa3M6Ci0KLQkvKiBEaXNhYmxlIHRoZSBwZXJpcGhlcmFsIGNsb2NrcywgYW5kIHNldCB0aGUgY29yZSBjbG9jayBmcmVxdWVuY3kgICovCi0JLyogKGhhcmQtY29kaW5nIGF0IDM5OC4xMk1IeiBmb3Igbm93KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JLyogVHVybiBPZmYgQUxMIG9uLWNoaXAgcGVyaXBoZXJhbCBjbG9ja3MgZm9yIHJlLWNvbmZpZ3VyYXRpb24gICAgICAqLwotCS8qIE5vdGU6IFNlZSBsYWJlbCAnRU5BQkxFQ0xLUycgZm9yIHRoZSByZS1lbmFibGluZyAgICAgICAgICAgICAgICAgKi8KLSNpZiAwCi0JbGRyICAgICByMSwgID1DS0VOCi0JbW92ICAgICByMiwgICMwCi0Jc3RyICAgICByMiwgIFtyMV0KLQotCS8qIGRlZmF1bHQgdmFsdWUgaW4gY2FzZSBubyB2YWxpZCByb3Rhcnkgc3dpdGNoIHNldHRpbmcgaXMgZm91bmQgICAgKi8KLQlsZHIgICAgIHIyLCA9KENDQ1JfTDI3fENDQ1JfTTJ8Q0NDUl9OMTApICAvKiBERUZBVUxUOiB7MjAwLzIwMC8xMDB9ICovCi0KLQkvKiAuLi4gYW5kIHdyaXRlIHRoZSBjb3JlIGNsb2NrIGNvbmZpZyByZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMSwgID1DQ0NSCi0Jc3RyICAgICByMiwgIFtyMV0KLQotI2VuZGlmCi0KLSNpZmRlZiBSVEMKLQkvKiBlbmFibGUgdGhlIDMyS2h6IG9zY2lsbGF0b3IgZm9yIFJUQyBhbmQgUG93ZXJNYW5hZ2VyICAgICAgICAgICAgICovCi0KLQlsZHIgICAgIHIxLCAgPU9TQ0MKLQltb3YgICAgIHIyLCAgI09TQ0NfT09OCi0Jc3RyICAgICByMiwgIFtyMV0KLQotCS8qIE5PVEU6ICBzcGluIGhlcmUgdW50aWwgT1NDQy5PT0sgZ2V0IHNldCwgbWVhbmluZyB0aGUgUExMICAgICAgICAgKi8KLQkvKiBoYXMgc2V0dGxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi02MDoKLQlsZHIgICAgIHIyLCBbcjFdCi0JYW5kcyAgICByMiwgcjIsICMxCi0JYmVxICAgICA2MGIKLSNlbmRpZgotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBTYXZlIFNEUkFNIHNpemUgKi8KLQlsZHIgICAgIHIxLCA9RFJBTV9TSVpFCi0Jc3RyICAgICByOCwgW3IxXQotCi0JLyogSW50ZXJydXB0IGluaXQ6IE1hc2sgYWxsIGludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkcglyMCwgPUlDTVIgLyogZW5hYmxlIG5vIHNvdXJjZXMgKi8KLQltb3YgcjEsICMwCi0Jc3RyIHIxLCBbcjBdCi0KLQkvKiBGSVhNRSAqLwotCi0jZGVmaW5lIE5PREVCVUcKLSNpZmRlZiBOT0RFQlVHCi0JLypEaXNhYmxlIHNvZnR3YXJlIGFuZCBkYXRhIGJyZWFrcG9pbnRzICovCi0JbW92CXIwLCMwCi0JbWNyCXAxNSwwLHIwLGMxNCxjOCwwICAvKiBpYmNyMCAqLwotCW1jcglwMTUsMCxyMCxjMTQsYzksMCAgLyogaWJjcjEgKi8KLQltY3IJcDE1LDAscjAsYzE0LGM0LDAgIC8qIGRiY29uICovCi0KLQkvKkVuYWJsZSBhbGwgZGVidWcgZnVuY3Rpb25hbGl0eSAqLwotCW1vdglyMCwjMHg4MDAwMDAwMAotCW1jcglwMTQsMCxyMCxjMTAsYzAsMCAgLyogZGNzciAqLwotI2VuZGlmCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogRW5kIG1lbXNldHVwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmZGVmIERFQlVHX0JMSU5LX0VOQUJMRQotCS8qIDd0aCBibGluayAqLwotCWJsCWJsaW5rCi0jZW5kaWYKLQotZW5kbG93bGV2ZWxfaW5pdDoKLQotCW1vdiAgICAgcGMsIHIxMAotCi0KLSNpZmRlZiBERUJVR19CTElOS19FTkFCTEUKLQotLyogZGVidWcgTEVEIGNvZGUgKi8KLQotLyogZGVsYXkgYWJvdXQgMjAwbXMgKi8KLWRlbGF5OgotCi0JLyogcmVzZXQgT1NDUiB0byAwICovCi0JbGRyCXI4LCA9T1NDUgotCW1vdglyOSwgIzAKLQlzdHIJcjksIFtyOF0KLQotCS8qIG1ha2Ugc3VyZSBuZXcgdmFsdWUgaGFzIHN0dWNrICovCi0xOgotCWxkcglyOCwgPU9TQ1IKLQlsZHIJcjksIFtyOF0KLQltb3YJcjgsICMweDEwMDAwCi0JY21wCXI5LCByOAotCWJndAkxYgotCi0JLyogbm93LCB3YWl0IGZvciBkZWxheSB0byBleHBpcmUgKi8KLTE6Ci0JbGRyCXI4LCA9T1NDUgotCWxkcglyOSwgW3I4XQotCW1vdglyOCwgIzB4ZDQwMDAKLQljbXAJcjgsIHI5Ci0JYmd0CTFiCi0KLQltb3YJcGMsIGxyCi0KLS8qIGJsaW5rIGNvZGUgLS0gdHJhc2hlcyByNywgcjgsIHI5ICovCi0KLS5nbG9ibCBibGluawotYmxpbms6Ci0KLQltb3YJcjcsIGxyCi0KLQkvKiBzZXQgR1BJTzEwIGFzIG91dG91dCAqLwotCWxkcglyOCwgID1HUERSMAotCWxkcglyOSwgIFtyOF0KLQlvcnIJcjksICByOSwgIygxPDwxMCkKLQlzdHIJcjksICBbcjhdCi0KLQkvKiB0dXJuIExFRCBvZmYgKi8KLQltb3YJcjksICAjKDE8PDEwKQotCWxkcglyOCwgID1HUENSMAotCXN0cglyOSwgW3I4XQotCWJsCWRlbGF5Ci0KLQkvKiB0dXJuIExFRCBvbiAqLwotCW1vdglyOSwgICMoMTw8MTApCi0JbGRyCXI4LCAgPUdQU1IwCi0Jc3RyCXI5LCBbcjhdCi0JYmwJZGVsYXkKLQotCS8qIHR1cm4gTEVEIG9mZiAqLwotCW1vdglyOSwgICMoMTw8MTApCi0JbGRyCXI4LCAgPUdQQ1IwCi0Jc3RyCXI5LCBbcjhdCi0KLQltb3YJcGMsIHI3Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYm9hcmQvcHhhMjU1X2lkcC9weGFfaWRwLmMgYi9ib2FyZC9weGEyNTVfaWRwL3B4YV9pZHAuYwppbmRleCA0YWI4YmQ0Li44MDRkMDljIDEwMDY0NAotLS0gYS9ib2FyZC9weGEyNTVfaWRwL3B4YV9pZHAuYworKysgYi9ib2FyZC9weGEyNTVfaWRwL3B4YV9pZHAuYwpAQCAtNDMsOCArNDMsOSBAQAogCiBpbnQgYm9hcmRfaW5pdCAodm9pZCkKIHsKLQkvKiBtZW1vcnkgYW5kIGNwdS1zcGVlZCBhcmUgc2V0dXAgYmVmb3JlIHJlbG9jYXRpb24gKi8KLQkvKiBzbyB3ZSBkbyBfbm90aGluZ18gaGVyZSAqLworCS8qIFdlIGhhdmUgUkFNLCBkaXNhYmxlIGNhY2hlICovCisJZGNhY2hlX2Rpc2FibGUoKTsKKwlpY2FjaGVfZGlzYWJsZSgpOwogCiAJLyogYXJjaCBudW1iZXIgb2YgTHViYm9jay1Cb2FyZCAqLwogCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSBNQUNIX1RZUEVfUFhBX0lEUDsKQEAgLTgyLDIxICs4MywxOSBAQAogCXJldHVybiAwOwogfQogCi0KLWludCBkcmFtX2luaXQgKHZvaWQpCitleHRlcm4gdm9pZCBweGFfZHJhbV9pbml0KHZvaWQpOworaW50IGRyYW1faW5pdCh2b2lkKQogewotCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKLQlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVsxXS5zdGFydCA9IFBIWVNfU0RSQU1fMjsKLQlnZC0+YmQtPmJpX2RyYW1bMV0uc2l6ZSA9IFBIWVNfU0RSQU1fMl9TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVsyXS5zdGFydCA9IFBIWVNfU0RSQU1fMzsKLQlnZC0+YmQtPmJpX2RyYW1bMl0uc2l6ZSA9IFBIWVNfU0RSQU1fM19TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVszXS5zdGFydCA9IFBIWVNfU0RSQU1fNDsKLQlnZC0+YmQtPmJpX2RyYW1bM10uc2l6ZSA9IFBIWVNfU0RSQU1fNF9TSVpFOwotCisJcHhhX2RyYW1faW5pdCgpOworCWdkLT5yYW1fc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOwogCXJldHVybiAwOwogfQogCit2b2lkIGRyYW1faW5pdF9iYW5rc2l6ZSh2b2lkKQoreworCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKKwlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOworfQogCiAjaWZkZWYgREVCVUdfQkxJTktDX0VOQUJMRQogCmRpZmYgLS1naXQgYS9ib2FyZC9yZW5lc2FzL3NoNzc4NWxjci9jb25maWcubWsgYi9ib2FyZC9yZW5lc2FzL3NoNzc4NWxjci9jb25maWcubWsKaW5kZXggMWE5MDM4Yy4uNjg1M2QyYiAxMDA2NDQKLS0tIGEvYm9hcmQvcmVuZXNhcy9zaDc3ODVsY3IvY29uZmlnLm1rCisrKyBiL2JvYXJkL3JlbmVzYXMvc2g3Nzg1bGNyL2NvbmZpZy5tawpAQCAtMjQsNiArMjQsOCBAQAogIwogc2luY2x1ZGUgJChPQkpUUkVFKS9ib2FyZC8kKEJPQVJERElSKS9jb25maWcudG1wCiAKLWlmbmRlZiBDT05GSUdfU1lTX1RFWFRfQkFTRQoraWZkZWYgQ09ORklHX1NIXzMyQklUCitDT05GSUdfU1lTX1RFWFRfQkFTRSA9IDB4OEZGODAwMDAKK2Vsc2UKIENPTkZJR19TWVNfVEVYVF9CQVNFID0gMHgwZmY4MDAwMAogZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL3NhbmRwb2ludC9lYXJseV9pbml0LlMgYi9ib2FyZC9zYW5kcG9pbnQvZWFybHlfaW5pdC5TCmluZGV4IDUzMWRjZGYuLjYxYjRiNTUgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NhbmRwb2ludC9lYXJseV9pbml0LlMKKysrIGIvYm9hcmQvc2FuZHBvaW50L2Vhcmx5X2luaXQuUwpAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBfX0FTU0VNQkxZX18JMQogI2VuZGlmCiAKKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KICNpbmNsdWRlIDxtcGM4MjR4Lmg+CmRpZmYgLS1naXQgYS9ib2FyZC9zYmM4NjQxZC9zYmM4NjQxZC5jIGIvYm9hcmQvc2JjODY0MWQvc2JjODY0MWQuYwppbmRleCA1NGIyZDBiLi5kOTU0ZDJmIDEwMDY0NAotLS0gYS9ib2FyZC9zYmM4NjQxZC9zYmM4NjQxZC5jCisrKyBiL2JvYXJkL3NiYzg2NDFkL3NiYzg2NDFkLmMKQEAgLTIwNiwxMDAgKzIwNiw0NSBAQAogCiB2b2lkIHBjaV9pbml0X2JvYXJkKHZvaWQpCiB7CisJc3RydWN0IGZzbF9wY2lfaW5mbyBwY2lfaW5mb1syXTsKIAl2b2xhdGlsZSBpbW1hcF90ICppbW1hcCA9IChpbW1hcF90ICopIENPTkZJR19TWVNfQ0NTUkJBUjsKIAl2b2xhdGlsZSBjY3NyX2d1cl90ICpndXIgPSAmaW1tYXAtPmltX2d1cjsKLQl1aW50IGRldmRpc3IgPSBndXItPmRldmRpc3I7CisJdWludCBkZXZkaXNyID0gaW5fYmUzMigmZ3VyLT5kZXZkaXNyKTsKIAl1aW50IGlvX3NlbCA9IChndXItPnBvcmRldnNyICYgTVBDODY0MV9QT1JERVZTUl9JT19TRUwpCiAJCT4+IE1QQzg2NDFfUE9SREVWU1JfSU9fU0VMX1NISUZUOworCWludCBwY2llX2VwOworCWludCBudW0gPSAwOwogCiAjaWZkZWYgQ09ORklHX1BDSUUxCi17Ci0Jdm9sYXRpbGUgY2Nzcl9mc2xfcGNpX3QgKnBjaSA9IChjY3NyX2ZzbF9wY2lfdCAqKSBDT05GSUdfU1lTX1BDSUUxX0FERFI7Ci0Jc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlID0gJnBjaWUxX2hvc2U7Ci0Jc3RydWN0IHBjaV9yZWdpb24gKnIgPSBob3NlLT5yZWdpb25zOwotI2lmZGVmIERFQlVHCi0JdWludCBob3N0MV9hZ2VudCA9IChndXItPnBvcmJtc3IgJiBNUEM4NjQxX1BPUkJNU1JfSEEpCi0JCT4+IE1QQzg2NDFfUE9SQk1TUl9IQV9TSElGVDsKLQl1aW50IHBleDFfYWdlbnQgPSAoaG9zdDFfYWdlbnQgPT0gMCkgfHwgKGhvc3QxX2FnZW50ID09IDEpOwotI2VuZGlmCi0JaWYgKChpb19zZWwgPT0gMiB8fCBpb19zZWwgPT0gMyB8fCBpb19zZWwgPT0gNQotCSAgICAgfHwgaW9fc2VsID09IDYgfHwgaW9fc2VsID09IDcgfHwgaW9fc2VsID09IDB4RikKLQkgICAgJiYgIShkZXZkaXNyICYgTVBDODZ4eF9ERVZESVNSX1BDSUVYMSkpIHsKLQkJZGVidWcoIlBDSS1FWFBSRVNTIDE6ICVzIFxuIiwgcGV4MV9hZ2VudCA/ICJBZ2VudCIgOiAiSG9zdCIpOwotCQlkZWJ1ZygiMHglMDh4PTB4JTA4eCAiLCAmcGNpLT5wbWVfbXNnX2RldCwgcGNpLT5wbWVfbXNnX2RldCk7Ci0JCWlmIChwY2ktPnBtZV9tc2dfZGV0KSB7Ci0JCQlwY2ktPnBtZV9tc2dfZGV0ID0gMHhmZmZmZmZmZjsKLQkJCWRlYnVnKCIgd2l0aCBlcnJvcnMuICBDbGVhcmluZy4gIE5vdyAweCUwOHgiLAotCQkJICAgICAgcGNpLT5wbWVfbXNnX2RldCk7Ci0JCX0KLQkJZGVidWcoIlxuIik7CisJaW50IHBjaWVfY29uZmlndXJlZCA9IGlzX2ZzbF9wY2lfY2ZnKExBV19UUkdUX0lGX1BDSUVfMSwgaW9fc2VsKTsKIAotCQkvKiBvdXRib3VuZCBtZW1vcnkgKi8KLQkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfTUVNX0JVUywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTLAotCQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfTUVNX1NJWkUsCi0JCQkgICAgICAgUENJX1JFR0lPTl9NRU0pOwotCi0JCS8qIG91dGJvdW5kIGlvICovCi0JCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX0lPX0JVUywKLQkJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMsCi0JCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMV9JT19TSVpFLAotCQkJICAgICAgIFBDSV9SRUdJT05fSU8pOwotCi0JCWhvc2UtPnJlZ2lvbl9jb3VudCA9IHIgLSBob3NlLT5yZWdpb25zOwotCi0JCWhvc2UtPmZpcnN0X2J1c25vPWZpcnN0X2ZyZWVfYnVzbm87Ci0KLQkJZnNsX3BjaV9pbml0KGhvc2UsICh1MzIpJnBjaS0+Y2ZnX2FkZHIsICh1MzIpJnBjaS0+Y2ZnX2RhdGEpOwotCi0JCWZpcnN0X2ZyZWVfYnVzbm89aG9zZS0+bGFzdF9idXNubysxOwotCQlwcmludGYgKCIgICAgUENJLUVYUFJFU1MgMSBvbiBidXMgJTAyeCAtICUwMnhcbiIsCi0JCQlob3NlLT5maXJzdF9idXNubyxob3NlLT5sYXN0X2J1c25vKTsKLQorCWlmIChwY2llX2NvbmZpZ3VyZWQgJiYgIShkZXZkaXNyICYgTVBDODZ4eF9ERVZESVNSX1BDSUVYMSkpIHsKKwkJU0VUX1NURF9QQ0lFX0lORk8ocGNpX2luZm9bbnVtXSwgMSk7CisJCXBjaWVfZXAgPSBmc2xfc2V0dXBfaG9zZSgmcGNpZTFfaG9zZSwgcGNpX2luZm9bbnVtXS5yZWdzKTsKKwkJcHJpbnRmKCIgICAgUENJRTEgY29ubmVjdGVkIGFzICVzIChiYXNlIGFkZHIgJWx4KVxuIiwKKwkJCQlwY2llX2VwID8gIkVuZHBvaW50IiA6ICJSb290IENvbXBsZXgiLAorCQkJCXBjaV9pbmZvW251bV0ucmVncyk7CisJCWZpcnN0X2ZyZWVfYnVzbm8gPSBmc2xfcGNpX2luaXRfcG9ydCgmcGNpX2luZm9bbnVtKytdLAorCQkJCQkmcGNpZTFfaG9zZSwgZmlyc3RfZnJlZV9idXNubyk7CiAJfSBlbHNlIHsKLQkJcHV0cygiUENJLUVYUFJFU1MgMTogRGlzYWJsZWRcbiIpOworCQlwdXRzKCIgICAgUENJRTE6IGRpc2FibGVkXG4iKTsKIAl9Ci19CiAjZWxzZQotCXB1dHMoIlBDSS1FWFBSRVNTMTogRGlzYWJsZWRcbiIpOworCXB1dHMoIiAgICBQQ0lFMTogZGlzYWJsZWRcbiIpOwogI2VuZGlmIC8qIENPTkZJR19QQ0lFMSAqLwogCiAjaWZkZWYgQ09ORklHX1BDSUUyCi17Ci0Jdm9sYXRpbGUgY2Nzcl9mc2xfcGNpX3QgKnBjaSA9IChjY3NyX2ZzbF9wY2lfdCAqKSBDT05GSUdfU1lTX1BDSUUyX0FERFI7Ci0Jc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlID0gJnBjaWUyX2hvc2U7Ci0Jc3RydWN0IHBjaV9yZWdpb24gKnIgPSBob3NlLT5yZWdpb25zOwogCi0JLyogb3V0Ym91bmQgbWVtb3J5ICovCi0JcGNpX3NldF9yZWdpb24ocisrLAotCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9NRU1fQlVTLAotCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUywKLQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfTUVNX1NJWkUsCi0JCSAgICAgICBQQ0lfUkVHSU9OX01FTSk7Ci0KLQkvKiBvdXRib3VuZCBpbyAqLwotCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJICAgICAgIENPTkZJR19TWVNfUENJRTJfSU9fQlVTLAotCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9JT19QSFlTLAotCQkgICAgICAgQ09ORklHX1NZU19QQ0lFMl9JT19TSVpFLAotCQkgICAgICAgUENJX1JFR0lPTl9JTyk7Ci0KLQlob3NlLT5yZWdpb25fY291bnQgPSByIC0gaG9zZS0+cmVnaW9uczsKLQotCWhvc2UtPmZpcnN0X2J1c25vPWZpcnN0X2ZyZWVfYnVzbm87Ci0KLQlmc2xfcGNpX2luaXQoaG9zZSwgKHUzMikmcGNpLT5jZmdfYWRkciwgKHUzMikmcGNpLT5jZmdfZGF0YSk7Ci0KLQlmaXJzdF9mcmVlX2J1c25vPWhvc2UtPmxhc3RfYnVzbm8rMTsKLQlwcmludGYgKCIgICAgUENJLUVYUFJFU1MgMiBvbiBidXMgJTAyeCAtICUwMnhcbiIsCi0JCWhvc2UtPmZpcnN0X2J1c25vLGhvc2UtPmxhc3RfYnVzbm8pOwotfQorCVNFVF9TVERfUENJRV9JTkZPKHBjaV9pbmZvW251bV0sIDIpOworCXBjaWVfZXAgPSBmc2xfc2V0dXBfaG9zZSgmcGNpZTJfaG9zZSwgcGNpX2luZm9bbnVtXS5yZWdzKTsKKwlwcmludGYoIiAgICBQQ0lFMiBjb25uZWN0ZWQgYXMgJXMgKGJhc2UgYWRkciAlbHgpXG4iLAorCQkJcGNpZV9lcCA/ICJFbmRwb2ludCIgOiAiUm9vdCBDb21wbGV4IiwKKwkJCXBjaV9pbmZvW251bV0ucmVncyk7CisJZmlyc3RfZnJlZV9idXNubyA9IGZzbF9wY2lfaW5pdF9wb3J0KCZwY2lfaW5mb1tudW0rK10sCisJCQkJJnBjaWUyX2hvc2UsIGZpcnN0X2ZyZWVfYnVzbm8pOwogI2Vsc2UKLQlwdXRzKCJQQ0ktRVhQUkVTUyAyOiBEaXNhYmxlZFxuIik7CisJcHV0cygiICAgIFBDSUUyOiBkaXNhYmxlZFxuIik7CiAjZW5kaWYgLyogQ09ORklHX1BDSUUyICovCi0KIH0KIAogCmRpZmYgLS1naXQgYS9ib2FyZC90M2NvcnAvaW5pdC5TIGIvYm9hcmQvdDNjb3JwL2luaXQuUwppbmRleCBlY2QzNWZmLi5hMjRkNmYzIDEwMDY0NAotLS0gYS9ib2FyZC90M2NvcnAvaW5pdC5TCisrKyBiL2JvYXJkL3QzY29ycC9pbml0LlMKQEAgLTIxLDYgKzIxLDcgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAorI2luY2x1ZGUgPGFzbS1vZmZzZXRzLmg+CiAjaW5jbHVkZSA8cHBjX2FzbS50bXBsPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgPGFzbS9tbXUuaD4KZGlmZiAtLWdpdCBhL2JvYXJkL3RxYy90cW04NXh4L2xhdy5jIGIvYm9hcmQvdHFjL3RxbTg1eHgvbGF3LmMKaW5kZXggN2U5YTJjNy4uZTY4NGJhMiAxMDA2NDQKLS0tIGEvYm9hcmQvdHFjL3RxbTg1eHgvbGF3LmMKKysrIGIvYm9hcmQvdHFjL3RxbTg1eHgvbGF3LmMKQEAgLTcxLDcgKzcxLDcgQEAKIAlTRVRfTEFXKENPTkZJR19TWVNfTEJDX0ZMQVNIX0JBU0UsIExBV18zX1NJWkUsIExBV19UUkdUX0lGX0xCQyksCiAJU0VUX0xBVyhDT05GSUdfU1lTX1BDSTFfSU9fUEhZUywgTEFXX1NJWkVfMTZNLCBMQVdfVFJHVF9JRl9QQ0kpLAogI2lmZGVmIENPTkZJR19QQ0lFMQotCVNFVF9MQVcoQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRSwgTEFXXzVfU0laRSwgTEFXX1RSR1RfSUZfUENJRV8xKSwKKwlTRVRfTEFXKENPTkZJR19TWVNfUENJRTFfTUVNX0JVUywgTEFXXzVfU0laRSwgTEFXX1RSR1RfSUZfUENJRV8xKSwKICNlbHNlIC8qICFDT05GSUdfUENJRTEgKi8KIAlTRVRfTEFXKENPTkZJR19TWVNfUklPX01FTV9CQVNFLCBMQVdfNV9TSVpFLCBMQVdfVFJHVF9JRl9SSU8pLAogI2VuZGlmIC8qIENPTkZJR19QQ0lFMSAqLwpAQCAtNzksNyArNzksNyBAQAogCVNFVF9MQVcoQ09ORklHX1NZU19DQU5fQkFTRSwgTEFXX1NJWkVfMTZNLCBMQVdfVFJHVF9JRl9MQkMpLAogI2VuZGlmIC8qIENPTkZJR19DQU5fRFJJVkVSIHx8IENPTkZJR19OQU5EICovCiAjaWZkZWYgQ09ORklHX1BDSUUxCi0JU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUxX0lPX0JBU0UsIExBV19TSVpFXzE2TSwgTEFXX1RSR1RfSUZfUENJRV8xKSwKKwlTRVRfTEFXKENPTkZJR19TWVNfUENJRTFfSU9fQlVTLCBMQVdfU0laRV8xNk0sIExBV19UUkdUX0lGX1BDSUVfMSksCiAjZW5kaWYgLyogQ09ORklHX1BDSUUgKi8KIH07CiAKZGlmZiAtLWdpdCBhL2JvYXJkL3RxYy90cW04NXh4L3RsYi5jIGIvYm9hcmQvdHFjL3RxbTg1eHgvdGxiLmMKaW5kZXggNzFmZTNhYi4uNzVkZDM0OCAxMDA2NDQKLS0tIGEvYm9hcmQvdHFjL3RxbTg1eHgvdGxiLmMKKysrIGIvYm9hcmQvdHFjL3RxbTg1eHgvdGxiLmMKQEAgLTgwLDcgKzgwLDcgQEAKIAkgKiBUTEIgNDoJMjU2TQlOb24tY2FjaGVhYmxlLCBndWFyZGVkCiAJICogMHhjMDAwMDAwMAkyNTZNCVBDSSBleHByZXNzIE1FTSBGaXJzdCBoYWxmCiAJICovCi0JU0VUX1RMQl9FTlRSWSAoMSwgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRSwgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRSwKKwlTRVRfVExCX0VOVFJZICgxLCBDT05GSUdfU1lTX1BDSUUxX01FTV9CVVMsIENPTkZJR19TWVNfUENJRTFfTUVNX0JVUywKIAkJICAgICAgIE1BUzNfU1ggfCBNQVMzX1NXIHwgTUFTM19TUiwgTUFTMl9JIHwgTUFTMl9HLAogCQkgICAgICAgMCwgNCwgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAogCkBAIC04OCw4ICs4OCw4IEBACiAJICogVExCIDU6CTI1Nk0JTm9uLWNhY2hlYWJsZSwgZ3VhcmRlZAogCSAqIDB4ZDAwMDAwMDAJMjU2TQlQQ0kgZXhwcmVzcyBNRU0gU2Vjb25kIGhhbGYKIAkgKi8KLQlTRVRfVExCX0VOVFJZICgxLCBDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFICsgMHgxMDAwMDAwMCwKLQkJICAgICAgIENPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UgKyAweDEwMDAwMDAwLAorCVNFVF9UTEJfRU5UUlkgKDEsIENPTkZJR19TWVNfUENJRTFfTUVNX0JVUyArIDB4MTAwMDAwMDAsCisJCSAgICAgICBDT05GSUdfU1lTX1BDSUUxX01FTV9CVVMgKyAweDEwMDAwMDAwLAogCQkgICAgICAgTUFTM19TWCB8IE1BUzNfU1cgfCBNQVMzX1NSLCBNQVMyX0kgfCBNQVMyX0csCiAJCSAgICAgICAwLCA1LCBCT09LRV9QQUdFU1pfMjU2TSwgMSksCiAjZWxzZSAvKiAhQ09ORklHX1BDSUUgKi8KQEAgLTE1NSw3ICsxNTUsNyBAQAogCSAqIFRMQiA5OgkgMTZNCU5vbi1jYWNoZWFibGUsIGd1YXJkZWQKIAkgKiAweGVmMDAwMDAwCSAxNk0JUENJIGV4cHJlc3MgSU8KIAkgKi8KLQlTRVRfVExCX0VOVFJZICgxLCBDT05GSUdfU1lTX1BDSUUxX0lPX0JBU0UsIENPTkZJR19TWVNfUENJRTFfSU9fQkFTRSwKKwlTRVRfVExCX0VOVFJZICgxLCBDT05GSUdfU1lTX1BDSUUxX0lPX0JVUywgQ09ORklHX1NZU19QQ0lFMV9JT19CVVMsCiAJCSAgICAgICBNQVMzX1NYIHwgTUFTM19TVyB8IE1BUzNfU1IsIE1BUzJfSSB8IE1BUzJfRywKIAkJICAgICAgIDAsIDksIEJPT0tFX1BBR0VTWl8xNk0sIDEpLAogI2VuZGlmIC8qIENPTkZJR19QQ0lFICovCkBAIC0yMDUsNyArMjA1LDcgQEAKIAkgKiBUTEIgNjoJMjU2TQlOb24tY2FjaGVhYmxlLCBndWFyZGVkCiAJICogMHhjMDAwMDAwMAkyNTZNCVBDSSBleHByZXNzIE1FTSBGaXJzdCBoYWxmCiAJICovCi0JU0VUX1RMQl9FTlRSWSAoMSwgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRSwgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRSwKKwlTRVRfVExCX0VOVFJZICgxLCBDT05GSUdfU1lTX1BDSUUxX01FTV9CVVMsIENPTkZJR19TWVNfUENJRTFfTUVNX0JVUywKIAkJICAgICAgIE1BUzNfU1ggfCBNQVMzX1NXIHwgTUFTM19TUiwgTUFTMl9JIHwgTUFTMl9HLAogCQkgICAgICAgMCwgNiwgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAogI2Vsc2UgLyogIUNPTkZJR19QQ0lFICovCmRpZmYgLS1naXQgYS9ib2FyZC90cWMvdHFtODV4eC90cW04NXh4LmMgYi9ib2FyZC90cWMvdHFtODV4eC90cW04NXh4LmMKaW5kZXggZGRhMmNiNi4uMmMzODg1ZiAxMDA2NDQKLS0tIGEvYm9hcmQvdHFjL3RxbTg1eHgvdHFtODV4eC5jCisrKyBiL2JvYXJkL3RxYy90cW04NXh4L3RxbTg1eHguYwpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPGFzbS9pbW1hcF84NXh4Lmg+CiAjaW5jbHVkZSA8YXNtL2ZzbF9wY2kuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgogI2luY2x1ZGUgPGlvcG9ydHMuaD4KICNpbmNsdWRlIDxmbGFzaC5oPgogI2luY2x1ZGUgPGxpYmZkdC5oPgpAQCAtNTM0LDcgKzUzNSw2IEBACiAvKgogICogSW5pdGlhbGl6ZSBQQ0kgRGV2aWNlcywgcmVwb3J0IGRldmljZXMgZm91bmQuCiAgKi8KLXN0YXRpYyBpbnQgZmlyc3RfZnJlZV9idXNubzsKIAogI2lmZGVmIENPTkZJR19QQ0kxCiBzdGF0aWMgc3RydWN0IHBjaV9jb250cm9sbGVyIHBjaTFfaG9zZTsKQEAgLTU0NCwxNDQgKzU0NCw3NyBAQAogc3RhdGljIHN0cnVjdCBwY2lfY29udHJvbGxlciBwY2llMV9ob3NlOwogI2VuZGlmIC8qIENPTkZJR19QQ0lFMSAqLwogCi1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9wY2kxKHZvaWQpCit2b2lkIHBjaV9pbml0X2JvYXJkICh2b2lkKQogeworCXN0cnVjdCBmc2xfcGNpX2luZm8gcGNpX2luZm9bMl07CisJaW50IGZpcnN0X2ZyZWVfYnVzbm8gPSAwOworCWludCBudW0gPSAwOworCWludCBwY2llX2VwOworCV9fbWF5YmVfdW51c2VkIGludCBwY2llX2NvbmZpZ3VyZWQ7CisKIAl2b2xhdGlsZSBjY3NyX2d1cl90ICpndXIgPSAodm9pZCAqKShDT05GSUdfU1lTX01QQzg1eHhfR1VUU19BRERSKTsKKwl1MzIgZGV2ZGlzciA9IGluX2JlMzIoJmd1ci0+ZGV2ZGlzcik7CisJdTMyIHBvcmRldnNyID0gaW5fYmUzMigmZ3VyLT5wb3JkZXZzcik7CisJX19tYXliZV91bnVzZWQgdWludCBpb19zZWwgPSAocG9yZGV2c3IgJiBNUEM4NXh4X1BPUkRFVlNSX0lPX1NFTCkgPj4KKwkJCU1QQzg1eHhfUE9SREVWU1JfSU9fU0VMX1NISUZUOworCiAjaWZkZWYgQ09ORklHX1BDSTEKLQl2b2xhdGlsZSBjY3NyX2ZzbF9wY2lfdCAqcGNpID0gKGNjc3JfZnNsX3BjaV90ICopQ09ORklHX1NZU19QQ0kxX0FERFI7Ci0Jc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlID0gJnBjaTFfaG9zZTsKLQlzdHJ1Y3QgcGNpX3JlZ2lvbiAqciA9IGhvc2UtPnJlZ2lvbnM7Ci0KLQkvKiBQT1JERVZTUlsxNV0gKi8KLQl1aW50IHBjaV8zMiA9IGd1ci0+cG9yZGV2c3IgJiBNUEM4NXh4X1BPUkRFVlNSX1BDSTFfUENJMzI7Ci0JLyogUE9SREVWU1JbMTRdICovCi0JdWludCBwY2lfYXJiID0gZ3VyLT5wb3JkZXZzciAmIE1QQzg1eHhfUE9SREVWU1JfUENJMV9BUkI7Ci0JLyogUE9SUExMU1JbMTZdICovCi0JdWludCBwY2lfY2xrX3NlbCA9IGd1ci0+cG9ycGxsc3IgJiBNUEM4NXh4X1BPUkRFVlNSX1BDSTFfU1BEOwotCi0JaW50IHBjaV9hZ2VudCA9IGZzbF9zZXR1cF9ob3NlKGhvc2UsIENPTkZJR19TWVNfUENJMV9BRERSKTsKLQorCXVpbnQgcGNpXzMyID0gaW5fYmUzMigmZ3VyLT5wb3JkZXZzcikgJiBNUEM4NXh4X1BPUkRFVlNSX1BDSTFfUENJMzI7CisJdWludCBwY2lfYXJiID0gaW5fYmUzMigmZ3VyLT5wb3JkZXZzcikgJiBNUEM4NXh4X1BPUkRFVlNSX1BDSTFfQVJCOwogCXVpbnQgcGNpX3NwZWVkID0gQ09ORklHX1NZU19DTEtfRlJFUTsJLyogUENJIFBTUEVFRCBpbiBbNDo1XSAqLworCXVpbnQgcGNpX2Nsa19zZWwgPSBpbl9iZTMyKCZndXItPnBvcnBsbHNyKSAmIE1QQzg1eHhfUE9SREVWU1JfUENJMV9TUEQ7CiAKLQlpZiAoIShndXItPmRldmRpc3IgJiBNUEM4NXh4X0RFVkRJU1JfUENJMSkpIHsKLQkJcHJpbnRmICgiUENJMTogICVkIGJpdCwgJXMgTUh6LCAlcywgJXMsICVzXG4iLAorCWlmICghKGRldmRpc3IgJiBNUEM4NXh4X0RFVkRJU1JfUENJMSkpIHsKKwkJU0VUX1NURF9QQ0lfSU5GTyhwY2lfaW5mb1tudW1dLCAxKTsKKwkJcGNpZV9lcCA9IGZzbF9zZXR1cF9ob3NlKCZwY2kxX2hvc2UsIHBjaV9pbmZvW251bV0ucmVncyk7CisJCXByaW50ZiAoIlxuICAgUENJMTogICVkIGJpdCwgJXMgTUh6LCAlcywgJXMsICVzXG4iLAogCQkJKHBjaV8zMikgPyAzMiA6IDY0LAogCQkJKHBjaV9zcGVlZCA9PSAzMzMzMzMzMykgPyAiMzMiIDoKIAkJCShwY2lfc3BlZWQgPT0gNjY2NjY2NjYpID8gIjY2IiA6ICJ1bmtub3duIiwKIAkJCXBjaV9jbGtfc2VsID8gInN5bmMiIDogImFzeW5jIiwKLQkJCXBjaV9hZ2VudCA/ICJhZ2VudCIgOiAiaG9zdCIsCisJCQlwY2llX2VwID8gImFnZW50IiA6ICJob3N0IiwKIAkJCXBjaV9hcmIgPyAiYXJiaXRlciIgOiAiZXh0ZXJuYWwtYXJiaXRlciIpOwotCi0JCS8qIG91dGJvdW5kIG1lbW9yeSAqLwotCQlwY2lfc2V0X3JlZ2lvbiAocisrLAotCQkJCUNPTkZJR19TWVNfUENJMV9NRU1fQkFTRSwKLQkJCQlDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMsCi0JCQkJQ09ORklHX1NZU19QQ0kxX01FTV9TSVpFLAotCQkJCVBDSV9SRUdJT05fTUVNKTsKLQotCQkvKiBvdXRib3VuZCBpbyAqLwotCQlwY2lfc2V0X3JlZ2lvbiAocisrLAotCQkJCUNPTkZJR19TWVNfUENJMV9JT19CQVNFLAotCQkJCUNPTkZJR19TWVNfUENJMV9JT19QSFlTLAotCQkJCUNPTkZJR19TWVNfUENJMV9JT19TSVpFLAotCQkJCVBDSV9SRUdJT05fSU8pOwotCi0JCWhvc2UtPnJlZ2lvbl9jb3VudCA9IHIgLSBob3NlLT5yZWdpb25zOwotCi0JCWhvc2UtPmZpcnN0X2J1c25vID0gZmlyc3RfZnJlZV9idXNubzsKLQotCQlmc2xfcGNpX2luaXQoaG9zZSwgKHUzMikmcGNpLT5jZmdfYWRkciwgKHUzMikmcGNpLT5jZmdfZGF0YSk7Ci0KLQkJcHJpbnRmICgiICAgICAgIFBDSSBvbiBidXMgJTAyeC4uJTAyeFxuIiwKLQkJCWhvc2UtPmZpcnN0X2J1c25vLCBob3NlLT5sYXN0X2J1c25vKTsKLQotCQlmaXJzdF9mcmVlX2J1c25vID0gaG9zZS0+bGFzdF9idXNubyArIDE7CisJCWZpcnN0X2ZyZWVfYnVzbm8gPSBmc2xfcGNpX2luaXRfcG9ydCgmcGNpX2luZm9bbnVtKytdLAorCQkJCQkmcGNpMV9ob3NlLCBmaXJzdF9mcmVlX2J1c25vKTsKICNpZmRlZiBDT05GSUdfUENJWF9DSEVDSwotCQlpZiAoIShndXItPnBvcmRldnNyICYgTVBDODV4eF9QT1JERVZTUl9QQ0kxKSkgeworCQlpZiAoIShpbl9iZTMyKCZndXItPnBvcmRldnNyKSAmIE1QQzg1eHhfUE9SREVWU1JfUENJMSkpIHsKIAkJCXVzaG9ydCByZWcxNiA9CiAJCQkJUENJX1hfQ01EX01BWF9TUExJVCB8IFBDSV9YX0NNRF9NQVhfUkVBRCB8CiAJCQkJUENJX1hfQ01EX0VSTyB8IFBDSV9YX0NNRF9EUEVSUl9FOwotCQkJdWludCBkZXYgPSBQQ0lfQkRGKGhvc2UtPmZpcnN0X2J1c25vLCAwLCAwKTsKKwkJCXVpbnQgZGV2ID0gUENJX0JERigwLCAwLCAwKTsKIAogCQkJLyogUENJLVggaW5pdCAqLwogCQkJaWYgKENPTkZJR19TWVNfQ0xLX0ZSRVEgPCA2NjAwMDAwMCkKIAkJCQlwdXRzICgiUENJLVggd2lsbCBvbmx5IHdvcmsgYXQgNjYgTUh6XG4iKTsKIAotCQkJcGNpX2hvc2Vfd3JpdGVfY29uZmlnX3dvcmQgKGhvc2UsIGRldiwgUENJWF9DT01NQU5ELAotCQkJCQkJICAgIHJlZzE2KTsKKwkJCXBjaV93cml0ZV9jb25maWdfd29yZChkZXYsIFBDSVhfQ09NTUFORCwgcmVnMTYpOwogCQl9CiAjZW5kaWYKIAl9IGVsc2UgewotCQlwdXRzICgiUENJMTogIGRpc2FibGVkXG4iKTsKKwkJcHJpbnRmKCIgICAgUENJMTogZGlzYWJsZWRcbiIpOwogCX0KLSNlbHNlIC8qICFDT05GSUdfUENJMSAqLwotCWd1ci0+ZGV2ZGlzciB8PSBNUEM4NXh4X0RFVkRJU1JfUENJMTsgLyogZGlzYWJsZSAqLwotI2VuZGlmIC8qIENPTkZJR19QQ0kxICovCi19CisjZWxzZQorCXNldGJpdHNfYmUzMigmZ3VyLT5kZXZkaXNyLCBNUEM4NXh4X0RFVkRJU1JfUENJMSk7CisjZW5kaWYKIAotc3RhdGljIGlubGluZSB2b2lkIGluaXRfcGNpZTEodm9pZCkKLXsKLQl2b2xhdGlsZSBjY3NyX2d1cl90ICpndXIgPSAodm9pZCAqKShDT05GSUdfU1lTX01QQzg1eHhfR1VUU19BRERSKTsKICNpZmRlZiBDT05GSUdfUENJRTEKLQl1aW50IGlvX3NlbCA9IChndXItPnBvcmRldnNyICYgTVBDODV4eF9QT1JERVZTUl9JT19TRUwpID4+IDE5OwotCXZvbGF0aWxlIGNjc3JfZnNsX3BjaV90ICpwY2kgPSAoY2Nzcl9mc2xfcGNpX3QgKilDT05GSUdfU1lTX1BDSUUxX0FERFI7Ci0Jc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlID0gJnBjaWUxX2hvc2U7Ci0JaW50IHBjaWVfZXA7Ci0Jc3RydWN0IHBjaV9yZWdpb24gKnIgPSBob3NlLT5yZWdpb25zOworCXBjaWVfY29uZmlndXJlZCA9IGlzX2ZzbF9wY2lfY2ZnKExBV19UUkdUX0lGX1BDSUVfMSwgaW9fc2VsKTsKIAotCWludCBwY2llX2NvbmZpZ3VyZWQgPSBpc19mc2xfcGNpX2NmZyhMQVdfVFJHVF9JRl9QQ0lFXzEsIGlvX3NlbCk7Ci0KLQlwY2llX2VwID0gZnNsX3NldHVwX2hvc2UoaG9zZSwgQ09ORklHX1NZU19QQ0lFMV9BRERSKTsKLQotCWlmIChwY2llX2NvbmZpZ3VyZWQgJiYgIShndXItPmRldmRpc3IgJiBNUEM4NXh4X0RFVkRJU1JfUENJRSkpewotCQlwcmludGYgKCJQQ0llOiAgJXMsIGJhc2UgYWRkcmVzcyAleCIsCi0JCQlwY2llX2VwID8gIkVuZHBvaW50IiA6ICJSb290IGNvbXBsZXgiLCAodWludClwY2kpOwotCi0JCWlmIChwY2ktPnBtZV9tc2dfZGV0KSB7Ci0JCQlwY2ktPnBtZV9tc2dfZGV0ID0gMHhmZmZmZmZmZjsKLQkJCWRlYnVnICgiLCB3aXRoIGVycm9ycy4gQ2xlYXJpbmcuIE5vdyAweCUwOHgiLAotCQkJICAgICAgIHBjaS0+cG1lX21zZ19kZXQpOwotCQl9Ci0JCXB1dHMgKCJcbiIpOwotCi0JCS8qIG91dGJvdW5kIG1lbW9yeSAqLwotCQlwY2lfc2V0X3JlZ2lvbiAocisrLAotCQkJCUNPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UsCi0JCQkJQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUywKLQkJCQlDT05GSUdfU1lTX1BDSUUxX01FTV9TSVpFLAotCQkJCVBDSV9SRUdJT05fTUVNKTsKLQotCQkvKiBvdXRib3VuZCBpbyAqLwotCQlwY2lfc2V0X3JlZ2lvbiAocisrLAotCQkJCUNPTkZJR19TWVNfUENJRTFfSU9fQkFTRSwKLQkJCQlDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMsCi0JCQkJQ09ORklHX1NZU19QQ0lFMV9JT19TSVpFLAotCQkJCVBDSV9SRUdJT05fSU8pOwotCi0JCWhvc2UtPnJlZ2lvbl9jb3VudCA9IHIgLSBob3NlLT5yZWdpb25zOwotCi0JCWhvc2UtPmZpcnN0X2J1c25vID0gZmlyc3RfZnJlZV9idXNubzsKLQotCQlmc2xfcGNpX2luaXQoaG9zZSwgKHUzMikmcGNpLT5jZmdfYWRkciwgKHUzMikmcGNpLT5jZmdfZGF0YSk7Ci0JCXByaW50ZiAoIiAgICAgICBQQ0llIG9uIGJ1cyAlMDJ4Li4lMDJ4XG4iLAotCQkJaG9zZS0+Zmlyc3RfYnVzbm8sIGhvc2UtPmxhc3RfYnVzbm8pOwotCi0JCWZpcnN0X2ZyZWVfYnVzbm8gPSBob3NlLT5sYXN0X2J1c25vICsgMTsKLQorCWlmIChwY2llX2NvbmZpZ3VyZWQgJiYgIShkZXZkaXNyICYgTVBDODV4eF9ERVZESVNSX1BDSUUpKSB7CisJCVNFVF9TVERfUENJRV9JTkZPKHBjaV9pbmZvW251bV0sIDEpOworCQlwY2llX2VwID0gZnNsX3NldHVwX2hvc2UoJnBjaWUxX2hvc2UsIHBjaV9pbmZvW251bV0ucmVncyk7CisJCXByaW50ZigiICAgIFBDSUUxIGNvbm5lY3RlZCBhcyAlc1xuIiwKKwkJCXBjaWVfZXAgPyAiRW5kcG9pbnQiIDogIlJvb3QgQ29tcGxleCIpOworCQlmaXJzdF9mcmVlX2J1c25vID0gZnNsX3BjaV9pbml0X3BvcnQoJnBjaV9pbmZvW251bSsrXSwKKwkJCQkJJnBjaWUxX2hvc2UsIGZpcnN0X2ZyZWVfYnVzbm8pOwogCX0gZWxzZSB7Ci0JCXByaW50ZiAoIlBDSWU6ICBkaXNhYmxlZFxuIik7CisJCXByaW50ZigiICAgIFBDSUUxOiBkaXNhYmxlZFxuIik7CiAJfQotI2Vsc2UgLyogIUNPTkZJR19QQ0lFMSAqLwotCWd1ci0+ZGV2ZGlzciB8PSBNUEM4NXh4X0RFVkRJU1JfUENJRTsgLyogZGlzYWJsZSAqLworI2Vsc2UKKwlzZXRiaXRzX2JlMzIoJmd1ci0+ZGV2ZGlzciwgTVBDODV4eF9ERVZESVNSX1BDSUUpOwogI2VuZGlmIC8qIENPTkZJR19QQ0lFMSAqLwogfQogCi12b2lkIHBjaV9pbml0X2JvYXJkICh2b2lkKQotewotCWluaXRfcGNpMSgpOwotCWluaXRfcGNpZTEoKTsKLX0KLQogI2lmZGVmIENPTkZJR19PRl9CT0FSRF9TRVRVUAogdm9pZCBmdF9ib2FyZF9zZXR1cCAodm9pZCAqYmxvYiwgYmRfdCAqYmQpCiB7CmRpZmYgLS1naXQgYS9ib2FyZC90cml6ZXBzaXYvTWFrZWZpbGUgYi9ib2FyZC90cml6ZXBzaXYvTWFrZWZpbGUKaW5kZXggNDRjMGQ0OS4uMDYwYWM4OSAxMDA2NDQKLS0tIGEvYm9hcmQvdHJpemVwc2l2L01ha2VmaWxlCisrKyBiL2JvYXJkL3RyaXplcHNpdi9NYWtlZmlsZQpAQCAtMjYsMTcgKzI2LDE1IEBACiBMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCiAKIENPQkpTCTo9IGNvbnhzLm8gZWVwcm9tLm8KLVNPQkpTCTo9IGxvd2xldmVsX2luaXQubyBweGF2b2x0YWdlLm8KIAotU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQorU1JDUwk6PSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCi1TT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCiAKLSQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQogCiBjbGVhbjoKLQlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCisJcm0gLWYgJChPQkpTKQogCiBkaXN0Y2xlYW46CWNsZWFuCiAJcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgJChvYmopLmRlcGVuZApkaWZmIC0tZ2l0IGEvYm9hcmQvdHJpemVwc2l2L2NvbmZpZy5tayBiL2JvYXJkL3RyaXplcHNpdi9jb25maWcubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNGViNzQuLjAwMDAwMDAKLS0tIGEvYm9hcmQvdHJpemVwc2l2L2NvbmZpZy5taworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQ09ORklHX1NZU19URVhUX0JBU0UgPTB4YTFmMDAwMDAKLSMgMHhhMTcwMDAwMAotI0NPTkZJR19TWVNfVEVYVF9CQVNFID0gMApkaWZmIC0tZ2l0IGEvYm9hcmQvdHJpemVwc2l2L2NvbnhzLmMgYi9ib2FyZC90cml6ZXBzaXYvY29ueHMuYwppbmRleCAwYzY3MzY3Li45OWY2NjViIDEwMDY0NAotLS0gYS9ib2FyZC90cml6ZXBzaXYvY29ueHMuYworKysgYi9ib2FyZC90cml6ZXBzaXYvY29ueHMuYwpAQCAtMTA0LDggKzEwNCw5IEBACiAKIGludCBib2FyZF9pbml0ICh2b2lkKQogewotCS8qIG1lbW9yeSBhbmQgY3B1LXNwZWVkIGFyZSBzZXR1cCBiZWZvcmUgcmVsb2NhdGlvbiAqLwotCS8qIHNvIHdlIGRvIF9ub3RoaW5nXyBoZXJlICovCisJLyogV2UgaGF2ZSBSQU0sIGRpc2FibGUgY2FjaGUgKi8KKwlkY2FjaGVfZGlzYWJsZSgpOworCWljYWNoZV9kaXNhYmxlKCk7CiAKIAkvKiBhcmNoIG51bWJlciBvZiBDb25YUyBCb2FyZCAqLwogCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSA3NzY7CkBAIC0xMzgsMTggKzEzOSwxOCBAQAogCXJldHVybiAmc2VyaWFsX2ZmdWFydF9kZXZpY2U7CiB9CiAKLWludCBkcmFtX2luaXQgKHZvaWQpCitleHRlcm4gdm9pZCBweGFfZHJhbV9pbml0KHZvaWQpOworaW50IGRyYW1faW5pdCh2b2lkKQoreworCXB4YV9kcmFtX2luaXQoKTsKKwlnZC0+cmFtX3NpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBkcmFtX2luaXRfYmFua3NpemUodm9pZCkKIHsKIAlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBQSFlTX1NEUkFNXzE7CiAJZ2QtPmJkLT5iaV9kcmFtWzBdLnNpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKLQlnZC0+YmQtPmJpX2RyYW1bMV0uc3RhcnQgPSBQSFlTX1NEUkFNXzI7Ci0JZ2QtPmJkLT5iaV9kcmFtWzFdLnNpemUgPSBQSFlTX1NEUkFNXzJfU0laRTsKLQlnZC0+YmQtPmJpX2RyYW1bMl0uc3RhcnQgPSBQSFlTX1NEUkFNXzM7Ci0JZ2QtPmJkLT5iaV9kcmFtWzJdLnNpemUgPSBQSFlTX1NEUkFNXzNfU0laRTsKLQlnZC0+YmQtPmJpX2RyYW1bM10uc3RhcnQgPSBQSFlTX1NEUkFNXzQ7Ci0JZ2QtPmJkLT5iaV9kcmFtWzNdLnNpemUgPSBQSFlTX1NEUkFNXzRfU0laRTsKLQotCXJldHVybiAwOwogfQogCiAjaWZkZWYgQ09ORklHX0RSSVZFUl9ETTkwMDAKZGlmZiAtLWdpdCBhL2JvYXJkL3RyaXplcHNpdi9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC90cml6ZXBzaXYvbG93bGV2ZWxfaW5pdC5TCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjhkNTU0Li4wMDAwMDAwCi0tLSBhL2JvYXJkL3RyaXplcHNpdi9sb3dsZXZlbF9pbml0LlMKKysrIC9kZXYvbnVsbApAQCAtMSw1MDMgKzAsMCBAQAotLyoKLSAqIFRoaXMgd2FzIG9yaWdpbmFsbHkgZnJvbSB0aGUgTHViYm9jayB1LWJvb3QgcG9ydC4KLSAqCi0gKiBNb3N0IG9mIHRoaXMgdGFrZW4gZnJvbSBSZWRib290IGhhbF9wbGF0Zm9ybV9zZXR1cC5oIHdpdGggY2xlYW51cAotICoKLSAqIE5PVEU6IEkgaGF2ZW4ndCBjbGVhbiB0aGlzIHVwIGNvbnNpZGVyYWJseSwganVzdCBlbm91Z2ggdG8gZ2V0IGl0Ci0gKiBydW5uaW5nLiBTZWUgaGFsX3BsYXRmb3JtX3NldHVwLmggZm9yIHRoZSBzb3VyY2UuIFNlZQotICogYm9hcmQvY3JhZGxlL2xvd2xldmVsX2luaXQuUyBmb3IgYW5vdGhlciBQWEEyNTAgc2V0dXAgdGhhdCBpcwotICogbXVjaCBjbGVhbmVyLgotICoKLSAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCi0gKiBwcm9qZWN0LgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCi0gKiBNQSAwMjExMS0xMzA3IFVTQQotICovCi0KLSNpbmNsdWRlIDxjb25maWcuaD4KLSNpbmNsdWRlIDx2ZXJzaW9uLmg+Ci0jaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KLQotLyogd2FpdCBmb3IgY29wcm9jZXNzb3Igd3JpdGUgY29tcGxldGUgKi8KLSAgIC5tYWNybyBDUFdBSVQgcmVnCi0gICBtcmMJcDE1LDAsXHJlZyxjMixjMCwwCi0gICBtb3YJXHJlZyxccmVnCi0gICBzdWIJcGMscGMsIzQKLSAgIC5lbmRtCi0KLQotLyoKLSAqCU1lbW9yeSBzZXR1cAotICovCi0KLS5nbG9ibCBsb3dsZXZlbF9pbml0Ci1sb3dsZXZlbF9pbml0OgotCi0JLyogU2V0IHVwIEdQSU8gcGlucyBmaXJzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JbGRyCQlyMCwJPUdQU1IwCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BTUjBfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BTUjEKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUFNSMV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUFNSMgotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQU1IyX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQU1IzCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BTUjNfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BDUjAKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUENSMF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUENSMQotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQQ1IxX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQQ1IyCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BDUjJfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BDUjMKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUENSM19WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUkVSMAotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dSRVIwX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdSRVIxCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1JFUjFfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1JFUjIKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUkVSMl9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUkVSMwotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dSRVIzX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdGRVIwCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0ZFUjBfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R0ZFUjEKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HRkVSMV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HRkVSMgotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dGRVIyX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdGRVIzCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0ZFUjNfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BEUjAKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUERSMF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUERSMQotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQRFIxX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQRFIyCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BEUjJfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BEUjMKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUERSM19WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMF9MCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjBfTF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMF9VCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjBfVV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMV9MCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjFfTF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMV9VCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjFfVV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMl9MCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjJfTF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSMl9VCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjJfVV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSM19MCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjNfTF9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HQUZSM19VCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR0FGUjNfVV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1QU1NSCQkvKiBlbmFibGUgR1BJTyBwaW5zICovCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfUFNTUl9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBFbmFibGUgbWVtb3J5IGludGVyZmFjZQkJCQkJICAgICovCi0JLyoJCQkJCQkJCSAgICAqLwotCS8qIFRoZSBzZXF1ZW5jZSBiZWxvdyBpcyBiYXNlZCBvbiB0aGUgcmVjb21tZW5kZWQgaW5pdCBzdGVwcwkgICAgKi8KLQkvKiBkZXRhaWxlZCBpbiB0aGUgSW50ZWwgUFhBMjUwIE9wZXJhdGluZyBTeXN0ZW1zIERldmVsb3BlcnMgR3VpZGUsICovCi0JLyogQ2hhcHRlciAxMC4JCQkJCQkJICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMTogV2FpdCBmb3IgYXQgbGVhc3QgMjAwIG1pY3Jvc2Vkb25kcyB0byBhbGxvdyBpbnRlcm5hbAkgICAgKi8KLQkvKgkgICBjbG9ja3MgdG8gc2V0dGxlLiBPbmx5IG5lY2Vzc2FyeSBhZnRlciBoYXJkIHJlc2V0Li4uCSAgICAqLwotCS8qCSAgIEZJWE1FOiBjYW4gYmUgb3B0aW1pemVkIGxhdGVyCQkJICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JbGRyIHIzLCA9T1NDUgkJCS8qIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvICovCi0JbW92IHIyLCAjMAotCXN0ciByMiwgW3IzXQotCWxkciByNCwgPTB4MzAwCQkJLyogcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsICAgKi8KLQkJCQkJLyogc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eQkgICAgKi8KLTE6Ci0JbGRyIHIyLCBbcjNdCi0JY21wIHI0LCByMgotCWJndCAxYgotCi1tZW1faW5pdDoKLQotCWxkcglyMSwgID1NRU1DX0JBU0UJCS8qIGdldCBtZW1vcnkgY29udHJvbGxlciBiYXNlIGFkZHIuICovCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAyYTogSW5pdGlhbGl6ZSBBc3luY2hyb25vdXMgc3RhdGljIG1lbW9yeSBjb250cm9sbGVyCSAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIE1TQyByZWdpc3RlcnM6IHRpbWluZywgYnVzIHdpZHRoLCBtZW0gdHlwZQkJCSAgICAqLwotCi0JLyogTVNDMDogbkNTKDAsMSkJCQkJCQkgICAgKi8KLQlsZHIJcjIsICAgPUNPTkZJR19TWVNfTVNDMF9WQUwKLQlzdHIJcjIsICAgW3IxLCAjTVNDMF9PRkZTRVRdCi0JbGRyCXIyLCAgIFtyMSwgI01TQzBfT0ZGU0VUXQkvKiByZWFkIGJhY2sgdG8gZW5zdXJlCSAgICAqLwotCQkJCQkJLyogdGhhdCBkYXRhIGxhdGNoZXMJICAgICovCi0JLyogTVNDMTogbkNTKDIsMykJCQkJCQkgICAgKi8KLQlsZHIJcjIsICA9Q09ORklHX1NZU19NU0MxX1ZBTAotCXN0cglyMiwgIFtyMSwgI01TQzFfT0ZGU0VUXQotCWxkcglyMiwgIFtyMSwgI01TQzFfT0ZGU0VUXQotCi0JLyogTVNDMjogbkNTKDQsNSkJCQkJCQkgICAgKi8KLQlsZHIJcjIsICA9Q09ORklHX1NZU19NU0MyX1ZBTAotCXN0cglyMiwgIFtyMSwgI01TQzJfT0ZGU0VUXQotCWxkcglyMiwgIFtyMSwgI01TQzJfT0ZGU0VUXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMmI6IEluaXRpYWxpemUgQ2FyZCBJbnRlcmZhY2UJCQkJICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogTUVDUjogTWVtb3J5IEV4cGFuc2lvbiBDYXJkIFJlZ2lzdGVyCQkJCSAgICAqLwotCWxkcglyMiwgID1DT05GSUdfU1lTX01FQ1JfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTUVDUl9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNRUNSX09GRlNFVF0KLQotCS8qIE1DTUVNMDogQ2FyZCBJbnRlcmZhY2Ugc2xvdCAwIHRpbWluZwkJCQkgICAgKi8KLQlsZHIJcjIsICA9Q09ORklHX1NZU19NQ01FTTBfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTUNNRU0wX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01DTUVNMF9PRkZTRVRdCi0KLQkvKiBNQ01FTTE6IENhcmQgSW50ZXJmYWNlIHNsb3QgMSB0aW1pbmcJCQkJICAgICovCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTUNNRU0xX1ZBTAotCXN0cglyMiwgIFtyMSwgI01DTUVNMV9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ01FTTFfT0ZGU0VUXQotCi0JLyogTUNBVFQwOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDAJICAgICovCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTUNBVFQwX1ZBTAotCXN0cglyMiwgIFtyMSwgI01DQVRUMF9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ0FUVDBfT0ZGU0VUXQotCi0JLyogTUNBVFQxOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDEJICAgICovCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTUNBVFQxX1ZBTAotCXN0cglyMiwgIFtyMSwgI01DQVRUMV9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ0FUVDFfT0ZGU0VUXQotCi0JLyogTUNJTzA6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMAkJICAgICovCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTUNJTzBfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTUNJTzBfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNJTzBfT0ZGU0VUXQotCi0JLyogTUNJTzE6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMQkJICAgICovCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTUNJTzFfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTUNJTzFfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNJTzFfT0ZGU0VUXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMmM6IFdyaXRlIEZMWUNORkcgIEZJWE1FOiB3aGF0J3MgdGhhdD8/PwkJICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCWxkcglyMiwgID1DT05GSUdfU1lTX0ZMWUNORkdfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjRkxZQ05GR19PRkZTRVRdCi0Jc3RyCXIyLAlbcjEsICNGTFlDTkZHX09GRlNFVF0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJkOiBJbml0aWFsaXplIFRpbWluZyBmb3IgU3luYyBNZW1vcnkgKFNEQ0xLMCkJCSAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIEJlZm9yZSBhY2Nlc3NpbmcgTURSRUZSIHdlIG5lZWQgYSB2YWxpZCBEUkkgZmllbGQsIHNvIHdlIHNldAkgICAgKi8KLQkvKiB0aGlzIHRvIHBvd2VyIG9uIGRlZmF1bHRzICsgRFJJIGZpZWxkLgkJCSAgICAqLwotCi0JbGRyCXI0LAlbcjEsICNNRFJFRlJfT0ZGU0VUXQotCWxkcglyMiwJPTB4RkZGCi0JYmljCXI0LAlyNCwgcjIKLQotCWxkcglyMywJPUNPTkZJR19TWVNfTURSRUZSX1ZBTAotCWFuZAlyMywJcjMsICByMgotCi0Jb3JyCXI0LAlyNCwgcjMKLQlzdHIJcjQsCVtyMSwgI01EUkVGUl9PRkZTRVRdCS8qIHdyaXRlIGJhY2sgTURSRUZSCSAgICAqLwotCi0Jb3JyCXI0LCAgcjQsICNNRFJFRlJfSzBSVU4KLQlvcnIJcjQsICByNCwgI01EUkVGUl9LMERCNAotCW9ycglyNCwgIHI0LCAjTURSRUZSX0swRlJFRQotCW9ycglyNCwgIHI0LCAjTURSRUZSX0swREIyCi0Jb3JyCXI0LCAgcjQsICNNRFJFRlJfSzFEQjIKLQliaWMJcjQsICByNCwgI01EUkVGUl9LMUZSRUUKLQliaWMJcjQsICByNCwgI01EUkVGUl9LMkZSRUUKLQotCXN0cglyNCwJW3IxLCAjTURSRUZSX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRFJFRlIJICAgICovCi0JbGRyCXI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCS8qIE5vdGU6IHByZXNlcnZlIHRoZSBtZHJlZnIgdmFsdWUgaW4gcjQJCQkgICAgKi8KLQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMzogSW5pdGlhbGl6ZSBTeW5jaHJvbm91cyBTdGF0aWMgTWVtb3J5IChGbGFzaC9QZXJpcGhlcmFscykgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBJbml0aWFsaXplIFNYQ05GRyByZWdpc3Rlci4gQXNzZXJ0IHRoZSBlbmFibGUgYml0cwkJICAgICovCi0KLQkvKiBXcml0ZSBTWE1SUyB0byBjYXVzZSBhbiBNUlMgY29tbWFuZCB0byBhbGwgZW5hYmxlZCBiYW5rcyBvZgkgICAgKi8KLQkvKiBzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5LiBOb3RlIHRoYXQgU1hMQ1IgbmVlZCBub3QgYmUgd3JpdHRlbiAgICovCi0JLyogYXQgdGhpcyB0aW1lLgkJCQkJCSAgICAqLwotCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfU1hDTkZHX1ZBTAotCXN0cglyMiwgIFtyMSwgI1NYQ05GR19PRkZTRVRdCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCA0OiBJbml0aWFsaXplIFNEUkFNCQkJCQkgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQliaWMJcjQsIHI0LCAjKE1EUkVGUl9LMkZSRUUgfE1EUkVGUl9LMUZSRUUgfCBNRFJFRlJfSzBGUkVFKQotCi0Jb3JyCXI0LCByNCwgI01EUkVGUl9LMVJVTgotCWJpYwlyNCwgcjQsICNNRFJFRlJfSzJEQjIKLQlzdHIJcjQsIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0JbGRyCXI0LCBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0JYmljCXI0LCByNCwgI01EUkVGUl9TTEZSU0gKLQlzdHIJcjQsIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0JbGRyCXI0LCBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0Jb3JyCXI0LCByNCwgI01EUkVGUl9FMVBJTgotCXN0cglyNCwgW3IxLCAjTURSRUZSX09GRlNFVF0KLQlsZHIJcjQsIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQlub3AKLQlub3AKLQotCi0JLyogU3RlcCA0ZDogd3JpdGUgTURDTkZHIHdpdGggTURDTkZHOkRFeCBkZWFzc2VydGVkIChzZXQgdG8gMCksIHRvICAqLwotCS8qCSAgICBjb25maWd1cmUgYnV0IG5vdCBlbmFibGUgZWFjaCBTRFJBTSBwYXJ0aXRpb24gcGFpci4JICAgICovCi0KLQlsZHIJcjQsCT1DT05GSUdfU1lTX01EQ05GR19WQUwKLQliaWMJcjQsCXI0LAkjKE1EQ05GR19ERTB8TURDTkZHX0RFMSkKLQliaWMJcjQsCXI0LAkjKE1EQ05GR19ERTJ8TURDTkZHX0RFMykKLQotCXN0cglyNCwJW3IxLCAjTURDTkZHX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRENORkcJICAgICovCi0JbGRyCXI0LAlbcjEsICNNRENORkdfT0ZGU0VUXQotCi0KLQkvKiBTdGVwIDRlOiBXYWl0IGZvciB0aGUgY2xvY2sgdG8gdGhlIFNEUkFNcyB0byBzdGFiaWxpemUsCSAgICAqLwotCS8qCSAgICAxMDAuLjIwMCC1c2VjLgkJCQkJICAgICovCi0KLQlsZHIgcjMsID1PU0NSCQkJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KLQltb3YgcjIsICMwCi0Jc3RyIHIyLCBbcjNdCi0JbGRyIHI0LCA9MHgzMDAJCQkvKiByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgICAqLwotCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5CSAgICAqLwotMToKLQkgICAgbGRyIHIyLCBbcjNdCi0JICAgIGNtcCByNCwgcjIKLQkgICAgYmd0IDFiCi0KLQotCS8qIFN0ZXAgNGY6IFRyaWdnZXIgYSBudW1iZXIgKHVzdWFsbHkgOCkgcmVmcmVzaCBjeWNsZXMgYnkJICAgICovCi0JLyoJICAgIGF0dGVtcHRpbmcgbm9uLWJ1cnN0IHJlYWQgb3Igd3JpdGUgYWNjZXNzZXMgdG8gZGlzYWJsZWQgKi8KLQkvKgkgICAgU0RSQU0sIGFzIGNvbW1vbmx5IHNwZWNpZmllZCBpbiB0aGUgcG93ZXIgdXAgc2VxdWVuY2UgICAqLwotCS8qCSAgICBkb2N1bWVudGVkIGluIFNEUkFNIGRhdGEgc2hlZXRzLiBUaGUgYWRkcmVzcyhlcykgdXNlZCAgICovCi0JLyoJICAgIGZvciB0aGlzIHB1cnBvc2UgbXVzdCBub3QgYmUgY2FjaGVhYmxlLgkJICAgICovCi0KLQlsZHIJcjMsCT1DT05GSUdfU1lTX0RSQU1fQkFTRQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCXN0cglyMiwJW3IzXQotCi0KLQkvKiBTdGVwIDRnOiBXcml0ZSBNRENORkcgd2l0aCBlbmFibGUgYml0cyBhc3NlcnRlZAkJICAgICovCi0JLyoJICAgIChNRENORkc6REV4IHNldCB0byAxKS4JCQkJICAgICovCi0KLQlsZHIJcjMsCVtyMSwgI01EQ05GR19PRkZTRVRdCi0JbW92CXI0LCByMwotCW9ycglyMywJcjMsCSNNRENORkdfREUwCi0Jc3RyCXIzLAlbcjEsICNNRENORkdfT0ZGU0VUXQotCW1vdglyMCwgcjMKLQotCS8qIFN0ZXAgNGg6IFdyaXRlIE1ETVJTLgkJCQkJICAgICovCi0KLQlsZHIJcjIsICA9Q09ORklHX1NZU19NRE1SU19WQUwKLQlzdHIJcjIsICBbcjEsICNNRE1SU19PRkZTRVRdCi0KLQkvKiBlbmFibGUgQVBEICovCi0JbGRyCXIzLCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQlvcnIJcjMsICByMywgICNNRFJFRlJfQVBECi0Jc3RyCXIzLCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCS8qIFdlIGFyZSBmaW5pc2hlZCB3aXRoIEludGVsJ3MgbWVtb3J5IGNvbnRyb2xsZXIgaW5pdGlhbGlzYXRpb24gICAgKi8KLQotCi1zZXR2b2x0YWdlOgotCi0JbW92CXIxMCwJbHIKLQlibAlpbml0UFhBdm9sdGFnZQkvKiBJbiBjYXNlIHRoZSBib2FyZCBpcyByZWJvb3Rpbmcgd2l0aCBhICAgICovCi0JbW92CWxyLAlyMTAJLyogbG93IHZvbHRhZ2UgcmFpc2UgaXQgdXAgdG8gYSBnb29kIG9uZS4gICAqLwotCi0jaWYgMQotCWIgaW5pdGlycXMKLSNlbmRpZgotCi13YWtldXA6Ci0JLyogQXJlIHdlIHdha2luZyBmcm9tIHNsZWVwPyAqLwotCWxkcglyMCwJPVJDU1IKLQlsZHIJcjEsCVtyMF0KLQlhbmQJcjEsCXIxLCAjKFJDU1JfR1BSIHwgUkNTUl9TTVIgfCBSQ1NSX1dEUiB8IFJDU1JfSFdSKQotCXN0cglyMSwJW3IwXQotCXRlcQlyMSwJI1JDU1JfU01SCi0KLQlibmUJaW5pdGlycXMKLQotCWxkcglyMCwJPVBTU1IKLQltb3YJcjEsCSNQU1NSX1BICi0Jc3RyCXIxLAlbcjBdCi0KLQkvKiBpZiBzbywgcmVzdW1lIGF0IFBTUFIgKi8KLQlsZHIJcjAsCT1QU1BSCi0JbGRyCXIxLAlbcjBdCi0JbW92CXBjLAlyMQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIERpc2FibGUgKG1hc2spIGFsbCBpbnRlcnJ1cHRzIGF0IGludGVycnVwdCBjb250cm9sbGVyCSAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotaW5pdGlycXM6Ci0KLQltb3YJcjEsICAjMAkJLyogY2xlYXIgaW50LiBsZXZlbCByZWdpc3RlciAoSVJRLCBub3QgRklRKSAqLwotCWxkcglyMiwgID1JQ0xSCi0Jc3RyCXIxLCAgW3IyXQotCi0JbGRyCXIyLCAgPUlDTVIJLyogbWFzayBhbGwgaW50ZXJydXB0cyBhdCB0aGUgY29udHJvbGxlciAgICAqLwotCXN0cglyMSwgIFtyMl0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBDbG9jayBpbml0aWFsaXNhdGlvbgkJCQkJCSAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotaW5pdGNsa3M6Ci0KLQkvKiBEaXNhYmxlIHRoZSBwZXJpcGhlcmFsIGNsb2NrcywgYW5kIHNldCB0aGUgY29yZSBjbG9jayBmcmVxdWVuY3kgICovCi0KLQkvKiBUdXJuIE9mZiBvbi1jaGlwIHBlcmlwaGVyYWwgY2xvY2tzIChleGNlcHQgZm9yIG1lbW9yeSkJICAgICovCi0JLyogZm9yIHJlLWNvbmZpZ3VyYXRpb24uCQkJCQkgICAgKi8KLQlsZHIJcjEsICA9Q0tFTgotCWxkcglyMiwgID1DT05GSUdfU1lTX0NLRU4KLQlzdHIJcjIsICBbcjFdCi0KLQkvKiAuLi4gYW5kIHdyaXRlIHRoZSBjb3JlIGNsb2NrIGNvbmZpZyByZWdpc3RlcgkJCSAgICAqLwotCWxkcglyMiwgID1DT05GSUdfU1lTX0NDQ1IKLQlsZHIJcjEsICA9Q0NDUgotCXN0cglyMiwgIFtyMV0KLQotCS8qIFR1cm4gb24gdHVyYm8gbW9kZSAqLwotCW1yYwlwMTQsIDAsIHIyLCBjNiwgYzAsIDAKLQlvcnIJcjIsIHIyLCAjMHhCCQkvKiBUdXJibywgRmFzdC1CdXMsIEZyZXEgY2hhbmdlKiovCi0JbWNyCXAxNCwgMCwgcjIsIGM2LCBjMCwgMAotCi0JLyogUmUtd3JpdGUgTURSRUZSICovCi0JbGRyCXIxLCA9TUVNQ19CQVNFCi0JbGRyCXIyLCBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCXN0cglyMiwgW3IxLCAjTURSRUZSX09GRlNFVF0KLSNpZmRlZiBSVEMKLQkvKiBlbmFibGUgdGhlIDMyS2h6IG9zY2lsbGF0b3IgZm9yIFJUQyBhbmQgUG93ZXJNYW5hZ2VyCQkgICAgKi8KLQlsZHIJcjEsICA9T1NDQwotCW1vdglyMiwgICNPU0NDX09PTgotCXN0cglyMiwgIFtyMV0KLQotCS8qIE5PVEU6ICBzcGluIGhlcmUgdW50aWwgT1NDQy5PT0sgZ2V0IHNldCwgbWVhbmluZyB0aGUgUExMCSAgICAqLwotCS8qIGhhcyBzZXR0bGVkLgkJCQkJCQkgICAgKi8KLTYwOgotCWxkcglyMiwgW3IxXQotCWFuZHMJcjIsIHIyLCAjMQotCWJlcQk2MGIKLSNlbHNlCi0jZXJyb3IgIlJUQyBub3QgZGVmaW5lZCIKLSNlbmRpZgotCi0JLyogSW50ZXJydXB0IGluaXQ6IE1hc2sgYWxsIGludGVycnVwdHMJCQkJICAgICovCi0gICAgbGRyIHIwLCA9SUNNUiAvKiBlbmFibGUgbm8gc291cmNlcyAqLwotCW1vdiByMSwgIzAKLSAgICBzdHIgcjEsIFtyMF0KLQkvKiBGSVhNRSAqLwotCi0jaWZkZWYgTk9ERUJVRwotCS8qRGlzYWJsZSBzb2Z0d2FyZSBhbmQgZGF0YSBicmVha3BvaW50cyAqLwotCW1vdglyMCwjMAotCW1jcglwMTUsMCxyMCxjMTQsYzgsMCAgLyogaWJjcjAgKi8KLQltY3IJcDE1LDAscjAsYzE0LGM5LDAgIC8qIGliY3IxICovCi0JbWNyCXAxNSwwLHIwLGMxNCxjNCwwICAvKiBkYmNvbiAqLwotCi0JLypFbmFibGUgYWxsIGRlYnVnIGZ1bmN0aW9uYWxpdHkgKi8KLQltb3YJcjAsIzB4ODAwMDAwMDAKLQltY3IJcDE0LDAscjAsYzEwLGMwLDAgIC8qIGRjc3IgKi8KLSNlbmRpZgotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIEVuZCBsb3dsZXZlbF9pbml0CQkJCQkJCSAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotZW5kbG93bGV2ZWxfaW5pdDoKLQotCW1vdglwYywgbHIKZGlmZiAtLWdpdCBhL2JvYXJkL3R0Y29udHJvbC92aXNpb24yL3Zpc2lvbjIuYyBiL2JvYXJkL3R0Y29udHJvbC92aXNpb24yL3Zpc2lvbjIuYwppbmRleCBjZTRjYjc4Li4wNzFkYWQ2IDEwMDY0NAotLS0gYS9ib2FyZC90dGNvbnRyb2wvdmlzaW9uMi92aXNpb24yLmMKKysrIGIvYm9hcmQvdHRjb250cm9sL3Zpc2lvbjIvdmlzaW9uMi5jCkBAIC0zNywxNCArMzcsMzQgQEAKICNpbmNsdWRlIDxmc2xfZXNkaGMuaD4KICNpbmNsdWRlIDxmc2xfcG1pYy5oPgogI2luY2x1ZGUgPG1jMTM4OTIuaD4KKyNpbmNsdWRlIDxsaW51eC9mYi5oPgogCiBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKIAogc3RhdGljIHUzMiBzeXN0ZW1fcmV2OwogCitleHRlcm4gaW50IG14NTFfZmJfaW5pdChzdHJ1Y3QgZmJfdmlkZW9tb2RlICptb2RlKTsKKwogI2lmZGVmIENPTkZJR19IV19XQVRDSERPRwogI2luY2x1ZGUgPHdhdGNoZG9nLmg+CiAKK3N0YXRpYyBzdHJ1Y3QgZmJfdmlkZW9tb2RlIG5lY19ubDY0NDhiYzI2XzA5YyA9IHsKKwkiTkVDX05MNjQ0OEJDMjYtMDlDIiwKKwk2MCwJLyogUmVmcmVzaCAqLworCTY0MCwJLyogeHJlcyAqLworCTQ4MCwJLyogeXJlcyAqLworCTM3NjUwLAkvKiBwaXhjbG9jayA9IDI2LjU2TWh6ICovCisJNDgsCS8qIGxlZnQgbWFyZ2luICovCisJMTYsCS8qIHJpZ2h0IG1hcmdpbiAqLworCTMxLAkvKiB1cHBlciBtYXJnaW4gKi8KKwkxMiwJLyogbG93ZXIgbWFyZ2luICovCisJOTYsCS8qIGhzeW5jLWxlbiAqLworCTIsCS8qIHZzeW5jLWxlbiAqLworCTAsCS8qIHN5bmMgKi8KKwlGQl9WTU9ERV9OT05JTlRFUkxBQ0VELAkvKiB2bW9kZSAqLworCTAsCS8qIGZsYWcgKi8KK307CisKIHZvaWQgaHdfd2F0Y2hkb2dfcmVzZXQodm9pZCkKIHsKIAlpbnQgdmFsOwpAQCAtNDIzLDYgKzQ0Myw5IEBACiAJbXhjX3JlcXVlc3RfaW9tdXgoTVg1MV9QSU5fQ1NQSTFfUkRZLCBJT01VWF9DT05GSUdfQUxUMyk7CiAJbXhjX2lvbXV4X3NldF9wYWQoTVg1MV9QSU5fQ1NQSTFfUkRZLCAweDgyKTsKIAorCS8qIFBXTSBPdXRwdXQgR1BJTzFfMiAqLworCW14Y19yZXF1ZXN0X2lvbXV4KE1YNTFfUElOX0dQSU8xXzIsIElPTVVYX0NPTkZJR19BTFQxKTsKKwogCS8qCiAJICogU2V0IEdQSU8xXzQgdG8gaGlnaCBhbmQgb3V0cHV0OyBpdCBpcyB1c2VkIHRvIHJlc2V0CiAJICogdGhlIHN5c3RlbSBvbiByZWJvb3QKQEAgLTYzMCw2ICs2NTMsMzMgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgYmFja2xpZ2h0KGludCBvbikKK3sKKwlpZiAob24pIHsKKwkJbXhjX2dwaW9fc2V0KDY1LCAxKTsKKwkJdWRlbGF5KDEwMDAwKTsKKwkJbXhjX2dwaW9fc2V0KDY4LCAxKTsKKwl9IGVsc2UgeworCQlteGNfZ3Bpb19zZXQoNjUsIDApOworCQlteGNfZ3Bpb19zZXQoNjgsIDApOworCX0KK30KKwordm9pZCBsY2RfZW5hYmxlKHZvaWQpCit7CisJaW50IHJldDsKKworCW14Y19yZXF1ZXN0X2lvbXV4KE1YNTFfUElOX0RJMV9QSU4yLCBJT01VWF9DT05GSUdfQUxUMCk7CisJbXhjX3JlcXVlc3RfaW9tdXgoTVg1MV9QSU5fREkxX1BJTjMsIElPTVVYX0NPTkZJR19BTFQwKTsKKworCW14Y19ncGlvX3NldCgyLCAxKTsKKwlteGNfcmVxdWVzdF9pb211eChNWDUxX1BJTl9HUElPMV8yLCBJT01VWF9DT05GSUdfQUxUMCk7CisKKwlyZXQgPSBteDUxX2ZiX2luaXQoJm5lY19ubDY0NDhiYzI2XzA5Yyk7CisJaWYgKHJldCkKKwkJcHV0cygiTENEIGNhbm5vdCBiZSBjb25maWd1cmVkXG4iKTsKK30KKwogaW50IGJvYXJkX2luaXQodm9pZCkKIHsKICNpZmRlZiBDT05GSUdfU1lTX0FSTV9XSVRIT1VUX1JFTE9DCkBAIC03MDksMyArNzU5LDIxIEBACiAJcmV0dXJuIDA7CiB9CiAKK2ludCBkb192aXNpb25fbGNkKGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqIGNvbnN0IGFyZ3ZbXSkKK3sKKwlpbnQgb247CisKKwlpZiAoYXJnYyA8IDIpCisJCXJldHVybiBjbWRfdXNhZ2UoY21kdHApOworCisJb24gPSAoc3RyY21wKGFyZ3ZbMV0sICJvbiIpID09IDApOworCWJhY2tsaWdodChvbik7CisKKwlyZXR1cm4gMDsKK30KKworVV9CT09UX0NNRCgKKwlsY2RibCwgQ09ORklHX1NZU19NQVhBUkdTLCAxLCBkb192aXNpb25fbGNkLAorCSJWaXNpb24yIEJhY2tsaWdodCIsCisJImxjZGJsIFtvbnxvZmZdXG4iCispOwpkaWZmIC0tZ2l0IGEvYm9hcmQvd2VwZXAyNTAvY29uZmlnLm1rIGIvYm9hcmQvd2VwZXAyNTAvY29uZmlnLm1rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGNiYzI0Li4wMDAwMDAwCi0tLSBhL2JvYXJkL3dlcGVwMjUwL2NvbmZpZy5taworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMKLSMgVGhpcyBpcyBjb25maWcgdXNlZCBmb3IgY29tcGlsYXRpb24gb2YgV0VQIEVQMjUwIHNvdXJjZXMKLSMKLSMgWW91IG1pZ2h0IGNoYW5nZSBsb2NhdGlvbiBvZiBVLUJvb3QgaW4gbWVtb3J5IGJ5IHNldHRpbmcgcmlnaHQgQ09ORklHX1NZU19URVhUX0JBU0UuCi0jIFRoaXMgYWxsb3dzIGZvciBleGFtcGxlIGhhdmluZyBvbmUgY29weSBsb2NhdGVkIGF0IHRoZSBlbmQgb2YgcmFtIGFuZCBzdG9yZWQKLSMgaW4gZmxhc2ggZGV2aWNlIGFuZCBsYXRlciBvbiB3aGlsZSBkZXZlbG9waW5nIHVzZSBvdGhlciBsb2NhdGlvbiB0byB0ZXN0Ci0jIHRoZSBjb2RlIGluIFJBTSBkZXZpY2Ugb25seS4KLSMKLQotQ09ORklHX1NZU19URVhUX0JBU0UgPSAweGExZmUwMDAwCi0jQ09ORklHX1NZU19URVhUX0JBU0UgPSAweGExMDAxMDAwCmRpZmYgLS1naXQgYS9ib2FyZC93ZXBlcDI1MC9mbGFzaC5jIGIvYm9hcmQvd2VwZXAyNTAvZmxhc2guYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZlOTE3MS4uMDAwMDAwMAotLS0gYS9ib2FyZC93ZXBlcDI1MC9mbGFzaC5jCisrKyAvZGV2L251bGwKQEAgLTEsMzI0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgRVRDIHMuci5vLgotICoKLSAqIFRoaXMgY29kZSB3YXMgaW5zcGlyZWQgYnkgTWFyaXVzIEdyb2VnZXIgYW5kIEt5bGUgSGFycmlzIGNvZGUKLSAqIGF2YWlsYWJsZSBpbiBvdGhlciBib2FyZCBwb3J0cyBmb3IgVS1Cb290Ci0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKgotICogV3JpdHRlbiBieSBQZXRlciBGaWd1bGkgPHBlcG9zaEBldGMuc2s+LCAyMDAzLgotICoKLSAqLwotCi0jaW5jbHVkZSA8Y29tbW9uLmg+Ci0jaW5jbHVkZSAiaW50ZWwuaCIKLQotCi0vKgotICogVGhpcyBjb2RlIHNob3VsZCBoYW5kbGUgQ0ZJIEZMQVNIIG1lbW9yeSBkZXZpY2UuIFRoaXMgY29kZSBpcyB2ZXJ5Ci0gKiBtaW5pbWFsaXN0aWMgYXBwcm9hY2ggd2l0aG91dCBtYW55IGVzc2VudGlhbCBlcnJvciBoYW5kbGluZyBjb2RlIGFzIHdlbGwuCi0gKiBCZWNhdXNlIFUtQm9vdCBhY3R1YWxseSBpcyBtaXNzaW5nIHNtYXJ0IGhhbmRsaW5nIG9mIEZMQVNIIGRldmljZSwKLSAqIHdlIGp1c3Qgc2V0IGZsYXNoX2lkIHRvIGFueXRoaW5nIGVsc2UgdG8gRkxBU0hfVU5LTk9XLCBzbyBjb21tb24gY29kZQotICogY2FuIGNhbGwgdXMgd2l0aG91dCBhbnkgcmVzdHJpY3Rpb25zLgotICogVE9ETzogQWRkIENGSSBRdWVyeSwgdG8gYmUgYWJsZSB0byBkZXRlcm1pbmUgRkxBU0ggZGV2aWNlLgotICogVE9ETzogQWRkIGVycm9yIGhhbmRsaW5nIGNvZGUKLSAqIE5PVEU6IFRoaXMgY29kZSB3YXMgdGVzdGVkIHdpdGggQlVTX1dJRFRIIDQgYW5kIElURVJMRUFWRSAyIG9ubHksIGJ1dAotICogICAgICAgaG9wZWZ1bGx5IG1heSB3b3JrIHdpdGggb3RoZXIgY29uZmlndXJhdGlvbnMuCi0gKi8KLQotI2lmICggV0VQX0ZMQVNIX0JVU19XSURUSCA9PSAxICkKLSMgIGRlZmluZSBGTEFTSF9CVVMgdnVfY2hhcgotIyAgZGVmaW5lIEZMQVNIX0JVU19SRVQgdV9jaGFyCi0jICBpZiAoIFdFUF9GTEFTSF9JTlRFUkxFQVZFID09IDEgKQotIyAgICBkZWZpbmUgRkxBU0hfQ01EKCB4ICkgeAotIyAgZWxzZQotIyAgICBlcnJvciAiV2l0aCA4Yml0IGJ1cyBvbmx5IG9uZSBjaGlwIGlzIGFsbG93ZWQiCi0jICBlbmRpZgotCi0KLSNlbGlmICggV0VQX0ZMQVNIX0JVU19XSURUSCA9PSAyICkKLSMgIGRlZmluZSBGTEFTSF9CVVMgdnVfc2hvcnQKLSMgIGRlZmluZSBGTEFTSF9CVVNfUkVUIHVfc2hvcnQKLSMgIGlmICggV0VQX0ZMQVNIX0lOVEVSTEVBVkUgPT0gMSApCi0jICAgIGRlZmluZSBGTEFTSF9DTUQoIHggKSB4Ci0jICBlbGlmICggV0VQX0ZMQVNIX0lOVEVSTEVBVkUgPT0gMiApCi0jICAgIGRlZmluZSBGTEFTSF9DTUQoIHggKSAoKCB4IDw8IDggKXwgeCApCi0jICBlbHNlCi0jICAgIGVycm9yICJXaXRoIDE2Yml0IGJ1cyBvbmx5IDEgb3IgMiBjaGlwKHMpIGFyZSBhbGxvd2VkIgotIyAgZW5kaWYKLQotCi0jZWxpZiAoIFdFUF9GTEFTSF9CVVNfV0lEVEggPT0gNCApCi0jICBkZWZpbmUgRkxBU0hfQlVTIHZ1X2xvbmcKLSMgIGRlZmluZSBGTEFTSF9CVVNfUkVUIHVfbG9uZwotIyAgaWYgKCBXRVBfRkxBU0hfSU5URVJMRUFWRSA9PSAxICkKLSMgICAgZGVmaW5lIEZMQVNIX0NNRCggeCApIHgKLSMgIGVsaWYgKCBXRVBfRkxBU0hfSU5URVJMRUFWRSA9PSAyICkKLSMgICAgZGVmaW5lIEZMQVNIX0NNRCggeCApICgoIHggPDwgMTYgKXwgeCApCi0jICBlbGlmICggV0VQX0ZMQVNIX0lOVEVSTEVBVkUgPT0gNCApCi0jICAgIGRlZmluZSBGTEFTSF9DTUQoIHggKSAoKCB4IDw8IDI0ICl8KCB4IDw8IDE2ICkgKCB4IDw8IDggKXwgeCApCi0jICBlbHNlCi0jICAgIGVycm9yICJXaXRoIDMyYml0IGJ1cyBvbmx5IDEsMiBvciA0IGNoaXAocykgYXJlIGFsbG93ZWQiCi0jICBlbmRpZgotCi0jZWxzZQotIyAgZXJyb3IgIkZsYXNoIGJ1cyB3aWR0aCBtaWdodCBiZSAxLDIsNCBmb3IgOCwxNiwzMiBiaXQgY29uZmlndXJhdGlvbiIKLSNlbmRpZgotCi0KLWZsYXNoX2luZm9fdCBmbGFzaF9pbmZvW0NPTkZJR19TWVNfTUFYX0ZMQVNIX0JBTktTXTsKLQotc3RhdGljIEZMQVNIX0JVU19SRVQgZmxhc2hfc3RhdHVzX3JlZyAodm9pZCkKLXsKLQotCUZMQVNIX0JVUyAqYWRkciA9IChGTEFTSF9CVVMgKikgMDsKLQotCSphZGRyID0gRkxBU0hfQ01EIChDRklfSU5URUxfQ01EX1JFQURfU1RBVFVTX1JFR0lTVEVSKTsKLQotCXJldHVybiAqYWRkcjsKLX0KLQotc3RhdGljIGludCBmbGFzaF9yZWFkeSAodWxvbmcgdGltZW91dCkKLXsKLQlpbnQgb2sgPSAxOwotCi0JcmVzZXRfdGltZXJfbWFza2VkICgpOwotCXdoaWxlICgoZmxhc2hfc3RhdHVzX3JlZyAoKSAmIEZMQVNIX0NNRCAoQ0ZJX0lOVEVMX1NSX1JFQURZKSkgIT0KLQkJICAgRkxBU0hfQ01EIChDRklfSU5URUxfU1JfUkVBRFkpKSB7Ci0JCWlmIChnZXRfdGltZXJfbWFza2VkICgpID4gdGltZW91dCAmJiB0aW1lb3V0ICE9IDApIHsKLQkJCW9rID0gMDsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCXJldHVybiBvazsKLX0KLQotI2lmICggQ09ORklHX1NZU19NQVhfRkxBU0hfQkFOS1MgIT0gMSApCi0jICBlcnJvciAiV0VQIHBsYXRmb3JtIGhhcyBvbmx5IG9uZSBmbGFzaCBiYW5rISIKLSNlbmRpZgotCi0KLXVsb25nIGZsYXNoX2luaXQgKHZvaWQpCi17Ci0JaW50IGk7Ci0JRkxBU0hfQlVTIGFkZHJlc3MgPSBXRVBfRkxBU0hfQkFTRTsKLQotCWZsYXNoX2luZm9bMF0uc2l6ZSA9IFdFUF9GTEFTSF9CQU5LX1NJWkU7Ci0JZmxhc2hfaW5mb1swXS5zZWN0b3JfY291bnQgPSBDT05GSUdfU1lTX01BWF9GTEFTSF9TRUNUOwotCWZsYXNoX2luZm9bMF0uZmxhc2hfaWQgPSBJTlRFTF9NQU5VRkFDVDsKLQltZW1zZXQgKGZsYXNoX2luZm9bMF0ucHJvdGVjdCwgMCwgQ09ORklHX1NZU19NQVhfRkxBU0hfU0VDVCk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX1NZU19NQVhfRkxBU0hfU0VDVDsgaSsrKSB7Ci0JCWZsYXNoX2luZm9bMF0uc3RhcnRbaV0gPSBhZGRyZXNzOwotI2lmZGVmIFdFUF9GTEFTSF9VTkxPQ0sKLQkJLyogU29tZSBkZXZpY2VzIGFyZSBodyBsb2NrZWQgYWZ0ZXIgc3RhcnQuICovCi0JCSooKEZMQVNIX0JVUyAqKSBhZGRyZXNzKSA9IEZMQVNIX0NNRCAoQ0ZJX0lOVEVMX0NNRF9MT0NLX1NFVFVQKTsKLQkJKigoRkxBU0hfQlVTICopIGFkZHJlc3MpID0gRkxBU0hfQ01EIChDRklfSU5URUxfQ01EX1VOTE9DS19CTE9DSyk7Ci0JCWZsYXNoX3JlYWR5ICgwKTsKLQkJKigoRkxBU0hfQlVTICopIGFkZHJlc3MpID0gRkxBU0hfQ01EIChDRklfSU5URUxfQ01EX1JFQURfQVJSQVkpOwotI2VuZGlmCi0JCWFkZHJlc3MgKz0gV0VQX0ZMQVNIX1NFQ1RfU0laRTsKLQl9Ci0KLQlmbGFzaF9wcm90ZWN0IChGTEFHX1BST1RFQ1RfU0VULAotCQkJCSAgIENPTkZJR19TWVNfRkxBU0hfQkFTRSwKLQkJCQkgICBDT05GSUdfU1lTX0ZMQVNIX0JBU0UgKyBtb25pdG9yX2ZsYXNoX2xlbiAtIDEsCi0JCQkJICAgJmZsYXNoX2luZm9bMF0pOwotCi0JZmxhc2hfcHJvdGVjdCAoRkxBR19QUk9URUNUX1NFVCwKLQkJCQkgICBDT05GSUdfRU5WX0FERFIsCi0JCQkJICAgQ09ORklHX0VOVl9BRERSICsgQ09ORklHX0VOVl9TSVpFIC0gMSwgJmZsYXNoX2luZm9bMF0pOwotCi0JcmV0dXJuIFdFUF9GTEFTSF9CQU5LX1NJWkU7Ci19Ci0KLXZvaWQgZmxhc2hfcHJpbnRfaW5mbyAoZmxhc2hfaW5mb190ICogaW5mbykKLXsKLQlpbnQgaTsKLQotCXByaW50ZiAoIiBJbnRlbCB2ZW5kb3JcbiIpOwotCXByaW50ZiAoIiAgU2l6ZTogJWxkIE1CIGluICVkIFNlY3RvcnNcbiIsCi0JCQlpbmZvLT5zaXplID4+IDIwLCBpbmZvLT5zZWN0b3JfY291bnQpOwotCi0JcHJpbnRmICgiICBTZWN0b3IgU3RhcnQgQWRkcmVzc2VzOiIpOwotCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykgewotCQlpZiAoIShpICUgNSkpIHsKLQkJCXByaW50ZiAoIlxuIik7Ci0JCX0KLQotCQlwcmludGYgKCIgJTA4bFglcyIsIGluZm8tPnN0YXJ0W2ldLAotCQkJCWluZm8tPnByb3RlY3RbaV0gPyAiIChSTykiIDogIiAgICAgIik7Ci0JfQotCXByaW50ZiAoIlxuIik7Ci19Ci0KLQotaW50IGZsYXNoX2VyYXNlIChmbGFzaF9pbmZvX3QgKiBpbmZvLCBpbnQgc19maXJzdCwgaW50IHNfbGFzdCkKLXsKLQlpbnQgZmxhZywgbm9uX3Byb3RlY3RlZCA9IDAsIHNlY3RvcjsKLQlpbnQgcmMgPSBFUlJfT0s7Ci0KLQlGTEFTSF9CVVMgKmFkZHJlc3M7Ci0KLQlmb3IgKHNlY3RvciA9IHNfZmlyc3Q7IHNlY3RvciA8PSBzX2xhc3Q7IHNlY3RvcisrKSB7Ci0JCWlmICghaW5mby0+cHJvdGVjdFtzZWN0b3JdKSB7Ci0JCQlub25fcHJvdGVjdGVkKys7Ci0JCX0KLQl9Ci0KLQlpZiAoIW5vbl9wcm90ZWN0ZWQpIHsKLQkJcmV0dXJuIEVSUl9QUk9URUNURUQ7Ci0JfQotCi0JLyoKLQkgKiBEaXNhYmxlIGludGVycnVwdHMgd2hpY2ggbWlnaHQgY2F1c2UgYSB0aW1lb3V0Ci0JICogaGVyZS4gUmVtZW1iZXIgdGhhdCBvdXIgZXhjZXB0aW9uIHZlY3RvcnMgYXJlCi0JICogYXQgYWRkcmVzcyAwIGluIHRoZSBmbGFzaCwgYW5kIHdlIGRvbid0IHdhbnQgYQotCSAqICh0aWNrZXIpIGV4Y2VwdGlvbiB0byBoYXBwZW4gd2hpbGUgdGhlIGZsYXNoCi0JICogY2hpcCBpcyBpbiBwcm9ncmFtbWluZyBtb2RlLgotCSAqLwotCWZsYWcgPSBkaXNhYmxlX2ludGVycnVwdHMgKCk7Ci0KLQotCS8qIFN0YXJ0IGVyYXNlIG9uIHVucHJvdGVjdGVkIHNlY3RvcnMgKi8KLQlmb3IgKHNlY3RvciA9IHNfZmlyc3Q7IHNlY3RvciA8PSBzX2xhc3QgJiYgIWN0cmxjICgpOyBzZWN0b3IrKykgewotCQlpZiAoaW5mby0+cHJvdGVjdFtzZWN0b3JdKSB7Ci0JCQlwcmludGYgKCJQcm90ZWN0ZWQgc2VjdG9yICUyZCBza2lwcGluZy4uLlxuIiwgc2VjdG9yKTsKLQkJCWNvbnRpbnVlOwotCQl9IGVsc2UgewotCQkJcHJpbnRmICgiRXJhc2luZyBzZWN0b3IgJTJkIC4uLiAiLCBzZWN0b3IpOwotCQl9Ci0KLQkJYWRkcmVzcyA9IChGTEFTSF9CVVMgKikgKGluZm8tPnN0YXJ0W3NlY3Rvcl0pOwotCi0JCSphZGRyZXNzID0gRkxBU0hfQ01EIChDRklfSU5URUxfQ01EX0JMT0NLX0VSQVNFKTsKLQkJKmFkZHJlc3MgPSBGTEFTSF9DTUQgKENGSV9JTlRFTF9DTURfQ09ORklSTSk7Ci0JCWlmIChmbGFzaF9yZWFkeSAoQ09ORklHX1NZU19GTEFTSF9FUkFTRV9UT1VUKSkgewotCQkJKmFkZHJlc3MgPSBGTEFTSF9DTUQgKENGSV9JTlRFTF9DTURfQ0xFQVJfU1RBVFVTX1JFR0lTVEVSKTsKLQkJCXByaW50ZiAoIm9rLlxuIik7Ci0JCX0gZWxzZSB7Ci0JCQkqYWRkcmVzcyA9IEZMQVNIX0NNRCAoQ0ZJX0lOVEVMX0NNRF9TVVNQRU5EKTsKLQkJCXJjID0gRVJSX1RJTU9VVDsKLQkJCXByaW50ZiAoInRpbWVvdXQhIEFib3J0aW5nLi4uXG4iKTsKLQkJCWJyZWFrOwotCQl9Ci0JCSphZGRyZXNzID0gRkxBU0hfQ01EIChDRklfSU5URUxfQ01EX1JFQURfQVJSQVkpOwotCX0KLQlpZiAoY3RybGMgKCkpCi0JCXByaW50ZiAoIlVzZXIgSW50ZXJydXB0IVxuIik7Ci0KLQkvKiBhbGxvdyBmbGFzaCB0byBzZXR0bGUgLSB3YWl0IDEwIG1zICovCi0JdWRlbGF5X21hc2tlZCAoMTAwMDApOwotCWlmIChmbGFnKSB7Ci0JCWVuYWJsZV9pbnRlcnJ1cHRzICgpOwotCX0KLQotCXJldHVybiByYzsKLX0KLQotc3RhdGljIGludCB3cml0ZV9kYXRhIChmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBkZXN0LCBGTEFTSF9CVVMgZGF0YSkKLXsKLQlGTEFTSF9CVVMgKmFkZHJlc3MgPSAoRkxBU0hfQlVTICopIGRlc3Q7Ci0JaW50IHJjID0gRVJSX09LOwotCWludCBmbGFnOwotCi0JLyogQ2hlY2sgaWYgRmxhc2ggaXMgKHN1ZmZpY2llbnRseSkgZXJhc2VkICovCi0JaWYgKCgqYWRkcmVzcyAmIGRhdGEpICE9IGRhdGEpIHsKLQkJcmV0dXJuIEVSUl9OT1RfRVJBU0VEOwotCX0KLQotCS8qCi0JICogRGlzYWJsZSBpbnRlcnJ1cHRzIHdoaWNoIG1pZ2h0IGNhdXNlIGEgdGltZW91dAotCSAqIGhlcmUuIFJlbWVtYmVyIHRoYXQgb3VyIGV4Y2VwdGlvbiB2ZWN0b3JzIGFyZQotCSAqIGF0IGFkZHJlc3MgMCBpbiB0aGUgZmxhc2gsIGFuZCB3ZSBkb24ndCB3YW50IGEKLQkgKiAodGlja2VyKSBleGNlcHRpb24gdG8gaGFwcGVuIHdoaWxlIHRoZSBmbGFzaAotCSAqIGNoaXAgaXMgaW4gcHJvZ3JhbW1pbmcgbW9kZS4KLQkgKi8KLQotCWZsYWcgPSBkaXNhYmxlX2ludGVycnVwdHMgKCk7Ci0KLQkqYWRkcmVzcyA9IEZMQVNIX0NNRCAoQ0ZJX0lOVEVMX0NNRF9DTEVBUl9TVEFUVVNfUkVHSVNURVIpOwotCSphZGRyZXNzID0gRkxBU0hfQ01EIChDRklfSU5URUxfQ01EX1BST0dSQU0xKTsKLQkqYWRkcmVzcyA9IGRhdGE7Ci0KLQlpZiAoIWZsYXNoX3JlYWR5IChDT05GSUdfU1lTX0ZMQVNIX1dSSVRFX1RPVVQpKSB7Ci0JCSphZGRyZXNzID0gRkxBU0hfQ01EIChDRklfSU5URUxfQ01EX1NVU1BFTkQpOwotCQlyYyA9IEVSUl9USU1PVVQ7Ci0JCXByaW50ZiAoInRpbWVvdXQhIEFib3J0aW5nLi4uXG4iKTsKLQl9Ci0KLQkqYWRkcmVzcyA9IEZMQVNIX0NNRCAoQ0ZJX0lOVEVMX0NNRF9SRUFEX0FSUkFZKTsKLQlpZiAoZmxhZykgewotCQllbmFibGVfaW50ZXJydXB0cyAoKTsKLQl9Ci0KLQlyZXR1cm4gcmM7Ci19Ci0KLWludCB3cml0ZV9idWZmIChmbGFzaF9pbmZvX3QgKiBpbmZvLCB1Y2hhciAqIHNyYywgdWxvbmcgYWRkciwgdWxvbmcgY250KQotewotCXVsb25nIHJlYWRfYWRkciwgd3JpdGVfYWRkcjsKLQlGTEFTSF9CVVMgZGF0YTsKLQlpbnQgaSwgcmVzdWx0ID0gRVJSX09LOwotCi0KLQlyZWFkX2FkZHIgPSBhZGRyICYgfihzaXplb2YgKEZMQVNIX0JVUykgLSAxKTsKLQl3cml0ZV9hZGRyID0gcmVhZF9hZGRyOwotCWlmIChyZWFkX2FkZHIgIT0gYWRkcikgewotCQlkYXRhID0gMDsKLQkJZm9yIChpID0gMDsgaSA8IHNpemVvZiAoRkxBU0hfQlVTKTsgaSsrKSB7Ci0JCQlpZiAocmVhZF9hZGRyIDwgYWRkciB8fCBjbnQgPT0gMCkgewotCQkJCWRhdGEgfD0gKigodWNoYXIgKikgcmVhZF9hZGRyKSA8PCBpICogODsKLQkJCX0gZWxzZSB7Ci0JCQkJZGF0YSB8PSAoKnNyYysrKSA8PCBpICogODsKLQkJCQljbnQtLTsKLQkJCX0KLQkJCXJlYWRfYWRkcisrOwotCQl9Ci0JCWlmICgocmVzdWx0ID0gd3JpdGVfZGF0YSAoaW5mbywgd3JpdGVfYWRkciwgZGF0YSkpICE9IEVSUl9PSykgewotCQkJcmV0dXJuIHJlc3VsdDsKLQkJfQotCQl3cml0ZV9hZGRyICs9IHNpemVvZiAoRkxBU0hfQlVTKTsKLQl9Ci0JZm9yICg7IGNudCA+PSBzaXplb2YgKEZMQVNIX0JVUyk7IGNudCAtPSBzaXplb2YgKEZMQVNIX0JVUykpIHsKLQkJaWYgKChyZXN1bHQgPSB3cml0ZV9kYXRhIChpbmZvLCB3cml0ZV9hZGRyLAotCQkJCQkJCQkgICooKEZMQVNIX0JVUyAqKSBzcmMpKSkgIT0gRVJSX09LKSB7Ci0JCQlyZXR1cm4gcmVzdWx0OwotCQl9Ci0JCXdyaXRlX2FkZHIgKz0gc2l6ZW9mIChGTEFTSF9CVVMpOwotCQlzcmMgKz0gc2l6ZW9mIChGTEFTSF9CVVMpOwotCX0KLQlpZiAoY250ID4gMCkgewotCQlyZWFkX2FkZHIgPSB3cml0ZV9hZGRyOwotCQlkYXRhID0gMDsKLQkJZm9yIChpID0gMDsgaSA8IHNpemVvZiAoRkxBU0hfQlVTKTsgaSsrKSB7Ci0JCQlpZiAoY250ID4gMCkgewotCQkJCWRhdGEgfD0gKCpzcmMrKykgPDwgaSAqIDg7Ci0JCQkJY250LS07Ci0JCQl9IGVsc2UgewotCQkJCWRhdGEgfD0gKigodWNoYXIgKikgcmVhZF9hZGRyKSA8PCBpICogODsKLQkJCX0KLQkJCXJlYWRfYWRkcisrOwotCQl9Ci0JCWlmICgocmVzdWx0ID0gd3JpdGVfZGF0YSAoaW5mbywgd3JpdGVfYWRkciwgZGF0YSkpICE9IDApIHsKLQkJCXJldHVybiByZXN1bHQ7Ci0JCX0KLQl9Ci0JcmV0dXJuIEVSUl9PSzsKLX0KZGlmZiAtLWdpdCBhL2JvYXJkL3dlcGVwMjUwL2ludGVsLmggYi9ib2FyZC93ZXBlcDI1MC9pbnRlbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzQ5OGI2Li4wMDAwMDAwCi0tLSBhL2JvYXJkL3dlcGVwMjUwL2ludGVsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAyIEVUQyBzLnIuby4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBFVEMgcy5yLm8uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICogV3JpdHRlbiBieSBNYXJjZWwgVGVsa2EgPG1hcmNlbEB0ZWxrYS5zaz4sIDIwMDIuCi0gKgotICogRG9jdW1lbnRhdGlvbjoKLSAqIFsxXSBJbnRlbCBDb3Jwb3JhdGlvbiwgIjMgVm9sdCBJbnRlbCBTdHJhdGEgRmxhc2ggTWVtb3J5IDI4RjEyOEozQSwgMjhGNjQwSjNBLAotICogICAgIDI4RjMyMEozQSAoeDgveDE2KSIsIEFwcmlsIDIwMDIsIE9yZGVyIE51bWJlcjogMjkwNjY3LTAxMQotICogWzJdIEludGVsIENvcnBvcmF0aW9uLCAiMyBWb2x0IFN5bmNocm9ub3VzIEludGVsIFN0cmF0YSBGbGFzaCBNZW1vcnkgMjhGNjQwSzMsIDI4RjY0MEsxOCwKLSAqICAgICAyOEYxMjhLMywgMjhGMTI4SzE4LCAyOEYyNTZLMywgMjhGMjU2SzE4ICh4MTYpIiwgSnVuZSAyMDAyLCBPcmRlciBOdW1iZXI6IDI5MDczNy0wMDUKLSAqCi0gKiBUaGlzIGZpbGUgaXMgdGFrZW4gZnJvbSBPcGVuV2luQ0UgcHJvamVjdCBob3N0ZWQgYnkgU291cmNlRm9yZ2UubmV0Ci0gKgotICovCi0KLSNpZm5kZWYJRkxBU0hfSU5URUxfSAotI2RlZmluZQlGTEFTSF9JTlRFTF9ICi0KLSNpbmNsdWRlIDxjb21tb24uaD4KLQotLyogSW50ZWwgQ0ZJIGNvbW1hbmRzIC0gc2VlIFRhYmxlIDQuIGluIFsxXSBhbmQgVGFibGUgMy4gaW4gWzJdICovCi0KLSNkZWZpbmUJQ0ZJX0lOVEVMX0NNRF9SRUFEX0FSUkFZCQkweEZGCS8qIDI4Rnh4eEozQSwgMjhGeHh4SzMsIDI4Rnh4eEsxOCAqLwotI2RlZmluZQlDRklfSU5URUxfQ01EX1JFQURfSURFTlRJRklFUgkJMHg5MAkvKiAyOEZ4eHhKM0EsIDI4Rnh4eEszLCAyOEZ4eHhLMTggKi8KLSNkZWZpbmUJQ0ZJX0lOVEVMX0NNRF9SRUFEX1FVRVJZCQkweDk4CS8qIDI4Rnh4eEozQSwgMjhGeHh4SzMsIDI4Rnh4eEsxOCAqLwotI2RlZmluZQlDRklfSU5URUxfQ01EX1JFQURfU1RBVFVTX1JFR0lTVEVSCTB4NzAJLyogMjhGeHh4SjNBLCAyOEZ4eHhLMywgMjhGeHh4SzE4ICovCi0jZGVmaW5lCUNGSV9JTlRFTF9DTURfQ0xFQVJfU1RBVFVTX1JFR0lTVEVSCTB4NTAJLyogMjhGeHh4SjNBLCAyOEZ4eHhLMywgMjhGeHh4SzE4ICovCi0jZGVmaW5lCUNGSV9JTlRFTF9DTURfUFJPR1JBTTEJCQkweDQwCS8qIDI4Rnh4eEozQSwgMjhGeHh4SzMsIDI4Rnh4eEsxOCAqLwotI2RlZmluZQlDRklfSU5URUxfQ01EX1BST0dSQU0yCQkJMHgxMAkvKiAyOEZ4eHhKM0EsIDI4Rnh4eEszLCAyOEZ4eHhLMTggKi8KLSNkZWZpbmUJQ0ZJX0lOVEVMX0NNRF9XUklURV9UT19CVUZGRVIJCTB4RTgJLyogMjhGeHh4SjNBLCAyOEZ4eHhLMywgMjhGeHh4SzE4ICovCi0jZGVmaW5lCUNGSV9JTlRFTF9DTURfQ09ORklSTQkJCTB4RDAJLyogMjhGeHh4SjNBLCAyOEZ4eHhLMywgMjhGeHh4SzE4ICovCi0jZGVmaW5lCUNGSV9JTlRFTF9DTURfQkxPQ0tfRVJBU0UJCTB4MjAJLyogMjhGeHh4SjNBLCAyOEZ4eHhLMywgMjhGeHh4SzE4ICovCi0jZGVmaW5lCUNGSV9JTlRFTF9DTURfU1VTUEVORAkJCTB4QjAJLyogMjhGeHh4SjNBLCAyOEZ4eHhLMywgMjhGeHh4SzE4ICovCi0jZGVmaW5lCUNGSV9JTlRFTF9DTURfUkVTVU1FCQkJMHhEMAkvKiAyOEZ4eHhKM0EsIDI4Rnh4eEszLCAyOEZ4eHhLMTggKi8KLSNkZWZpbmUJQ0ZJX0lOVEVMX0NNRF9MT0NLX1NFVFVQCQkweDYwCS8qIDI4Rnh4eEozQSwgMjhGeHh4SzMsIDI4Rnh4eEsxOCAqLwotI2RlZmluZQlDRklfSU5URUxfQ01EX0xPQ0tfQkxPQ0sJCTB4MDEJLyogMjhGeHh4SjNBLCAyOEZ4eHhLMywgMjhGeHh4SzE4ICovCi0jZGVmaW5lCUNGSV9JTlRFTF9DTURfVU5MT0NLX0JMT0NLCQkweEQwCS8qIDI4Rnh4eEozQSAtIHVubG9ja3MgYWxsIGJsb2NrcywgMjhGRnh4eEszLCAyOEZ4eHhLMTggKi8KLSNkZWZpbmUJQ0ZJX0lOVEVMX0NNRF9MT0NLX0RPV05fQkxPQ0sJCTB4MkYJLyogMjhGeHh4SzMsIDI4Rnh4eEsxOCAqLwotCi0vKiBJbnRlbCBDRkkgU3RhdHVzIFJlZ2lzdGVyIGJpdHMgLSBzZWUgVGFibGUgNi4gaW4gWzFdIGFuZCBUYWJsZSA3LiBpbiBbMl0gKi8KLQotI2RlZmluZQlDRklfSU5URUxfU1JfUkVBRFkJCQkxIDw8IDcJLyogMjhGeHh4SjNBLCAyOEZ4eHhLMywgMjhGeHh4SzE4ICovCi0jZGVmaW5lCUNGSV9JTlRFTF9TUl9FUkFTRV9TVVNQRU5ECQkxIDw8IDYJLyogMjhGeHh4SjNBLCAyOEZ4eHhLMywgMjhGeHh4SzE4ICovCi0jZGVmaW5lCUNGSV9JTlRFTF9TUl9FUkFTRV9FUlJPUgkJMSA8PCA1CS8qIDI4Rnh4eEozQSwgMjhGeHh4SzMsIDI4Rnh4eEsxOCAqLwotI2RlZmluZQlDRklfSU5URUxfU1JfUFJPR1JBTV9FUlJPUgkJMSA8PCA0CS8qIDI4Rnh4eEozQSwgMjhGeHh4SzMsIDI4Rnh4eEsxOCAqLwotI2RlZmluZQlDRklfSU5URUxfU1JfVlBFTl9FUlJPUgkJCTEgPDwgMwkvKiAyOEZ4eHhKM0EsIDI4Rnh4eEszLCAyOEZ4eHhLMTggKi8KLSNkZWZpbmUJQ0ZJX0lOVEVMX1NSX1BST0dSQU1fU1VTUEVORAkJMSA8PCAyCS8qIDI4Rnh4eEozQSwgMjhGeHh4SzMsIDI4Rnh4eEsxOCAqLwotI2RlZmluZQlDRklfSU5URUxfU1JfQkxPQ0tfTE9DS0VECQkxIDw8IDEJLyogMjhGeHh4SjNBLCAyOEZ4eHhLMywgMjhGeHh4SzE4ICovCi0jZGVmaW5lCUNGSV9JTlRFTF9TUl9CRUZQCQkJMSA8PCAwCS8qIDI4Rnh4eEszLCAyOEZ4eHhLMTggKi8KLQotLyogSW50ZWwgZmxhc2ggZGV2aWNlIElEIGNvZGVzIGZvciAyOEZ4eHhKM0EgLSBzZWUgVGFibGUgNS4gaW4gWzFdICovCi0KLSNkZWZpbmUJQ0ZJX0NISVBfSU5URUxfMjhGMzIwSjNBCQkweDAwMTYKLSNkZWZpbmUJQ0ZJX0NISVBOX0lOVEVMXzI4RjMyMEozQQkJIjI4RjMyMEozQSIKLSNkZWZpbmUJQ0ZJX0NISVBfSU5URUxfMjhGNjQwSjNBCQkweDAwMTcKLSNkZWZpbmUJQ0ZJX0NISVBOX0lOVEVMXzI4RjY0MEozQQkJIjI4RjY0MEozQSIKLSNkZWZpbmUJQ0ZJX0NISVBfSU5URUxfMjhGMTI4SjNBCQkweDAwMTgKLSNkZWZpbmUJQ0ZJX0NISVBOX0lOVEVMXzI4RjEyOEozQQkJIjI4RjEyOEozQSIKLQotLyogSW50ZWwgZmxhc2ggZGV2aWNlIElEIGNvZGVzIGZvciAyOEZ4eHhLMyBhbmQgMjhGeHh4SzE4IC0gc2VlIFRhYmxlIDguIGluIFsyXSAqLwotCi0jZGVmaW5lCUNGSV9DSElQX0lOVEVMXzI4RjY0MEszCQkJMHg4ODAxCi0jZGVmaW5lCUNGSV9DSElQTl9JTlRFTF8yOEY2NDBLMwkJIjI4RjY0MEszIgotI2RlZmluZQlDRklfQ0hJUF9JTlRFTF8yOEYxMjhLMwkJCTB4ODgwMgotI2RlZmluZQlDRklfQ0hJUE5fSU5URUxfMjhGMTI4SzMJCSIyOEYxMjhLMyIKLSNkZWZpbmUJQ0ZJX0NISVBfSU5URUxfMjhGMjU2SzMJCQkweDg4MDMKLSNkZWZpbmUJQ0ZJX0NISVBOX0lOVEVMXzI4RjI1NkszCQkiMjhGMjU2SzMiCi0jZGVmaW5lCUNGSV9DSElQX0lOVEVMXzI4RjY0MEsxOAkJMHg4ODA1Ci0jZGVmaW5lCUNGSV9DSElQTl9JTlRFTF8yOEY2NDBLMTgJCSIyOEY2NDBLMTgiCi0jZGVmaW5lCUNGSV9DSElQX0lOVEVMXzI4RjEyOEsxOAkJMHg4ODA2Ci0jZGVmaW5lCUNGSV9DSElQTl9JTlRFTF8yOEYxMjhLMTgJCSIyOEYxMjhLMTgiCi0jZGVmaW5lCUNGSV9DSElQX0lOVEVMXzI4RjI1NksxOAkJMHg4ODA3Ci0jZGVmaW5lCUNGSV9DSElQTl9JTlRFTF8yOEYyNTZLMTgJCSIyOEYyNTZLMTgiCi0KLSNlbmRpZiAvKiBGTEFTSF9JTlRFTF9IICovCmRpZmYgLS1naXQgYS9ib2FyZC93ZXBlcDI1MC9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC93ZXBlcDI1MC9sb3dsZXZlbF9pbml0LlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliYjA5MWYuLjAwMDAwMDAKLS0tIGEvYm9hcmQvd2VwZXAyNTAvbG93bGV2ZWxfaW5pdC5TCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIgRVRDIHMuci5vLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgotICogb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotICogMDIxMTEtMTMwNywgVVNBLgotICoKLSAqIFdyaXR0ZW4gYnkgTWFyY2VsIFRlbGthIDxtYXJjZWxAdGVsa2Euc2s+LCAyMDAxLCAyMDAyLgotICogQ2hhbmdlcyBmb3IgVS1Cb290IFBldGVyIEZpZ3VsaSA8cGVwb3NoQGV0Yy5zaz4sIDIwMDMuCi0gKgotICogVGhpcyBmaWxlIGlzIHRha2VuIGZyb20gT3BlbldpbkNFIHByb2plY3QgaG9zdGVkIGJ5IFNvdXJjZUZvcmdlLm5ldAotICoKLSAqIERvY3VtZW50YXRpb246Ci0gKiBbMV0gSW50ZWwgQ29ycG9yYXRpb24sICJJbnRlbCBQWEEyNTAgYW5kIFBYQTIxMCBBcHBsaWNhdGlvbiBQcm9jZXNzb3JzCi0gKiAgICAgRGV2ZWxvcGVyJ3MgTWFudWFsIiwgRmVicnVhcnkgMjAwMiwgT3JkZXIgTnVtYmVyOiAyNzg1MjItMDAxCi0gKiBbMl0gU2Ftc3VuZyBFbGVjdHJvbmljcywgIjhNeDE2IFNEUkFNIDU0Q1NQIEs0UzI4MTYzM0QtUkwvTi9QIiwKLSAqICAgICBSZXZpc2lvbiAxLjAsIEZlYnJ1YXJ5IDIwMDIKLSAqIFszXSBTYW1zdW5nIEVsZWN0cm9uaWNzLCAiMTZNeDE2IFNEUkFNIDU0Q1NQIEs0UzU2MTYzM0MtUkwoTikiLAotICogICAgIFJldmlzaW9uIDEuMCwgRmVicnVhcnkgMjAwMgotICoKLSovCi0KLSNpbmNsdWRlIDxjb25maWcuaD4KLSNpbmNsdWRlIDx2ZXJzaW9uLmg+Ci0jaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KLQotLmdsb2JsIGxvd2xldmVsX2luaXQKLWxvd2xldmVsX2luaXQ6Ci0KLQltb3YJcjEwLCBscgotCi0vKglzZXR1cCBtZW1vcnkgLSBzZWUgNi4xMiBpbiBbMV0KLSAqCVN0ZXAgMQktIHdhaXQgMjAwIHVzCi0gKi8KLQltb3YJcjAsIzB4MjcwMAkJCS8qIHdhaXQgMjAwIHVzIEAgOTkuNSBNSHogKi8KLTE6CXN1YnMJcjAsIHIwLCAjMQotCWJuZQkxYgotLyoJVE9ETzogY29tcGxldGUgc3RlcCAxIGZvciBTeW5jaHJvbm91cyBTdGF0aWMgbWVtb3J5Ki8KLQotCWxkcglyMCwgPTB4NDgwMDAwMDAJCQkvKiBNQ19CQVNFICovCi0KLQotLyoJc3RlcCAxLmEgLSBzZXR1cCBNU0N4Ci0gKi8KLQlsZHIJcjEsID0weDAwMDAxMkIzCQkJLyogTVNDMF9SUlIwKDEpIHwgTVNDMF9SRE4wKDIpIHwgTVNDMF9SREYwKDExKSB8IE1TQzBfUlQwKDMpICovCi0Jc3RyCXIxLCBbcjAsICMweDhdCQkJLyogTVNDMF9PRkZTRVQgKi8KLQotLyoJc3RlcCAxLmMgLSBjbGVhciBNRFJFRlI6SzFGUkVFLCBzZXQgTURSRUZSOkRSSQotICoJc2VlIEFVVE8gUkVGUkVTSCBjaGFwdGVyIGluIHNlY3Rpb24gRC4gaW4gWzJdIGFuZCBpbiBbM10KLSAqCURSSSA9ICg2NG1zIC8gNDA5NikgKiA5OS41M01IeiAvIDMyID0gNDggZm9yIEs0UzI4MTYzMwotICoJRFJJID0gKDY0bXMgLyA4MTkyKSAqIDk5LjUyTUh6IC8gMzIgPSAyNCBmb3IgSzRTNTYxNjMzCi0gKglUT0RPOiBjb21wbGV0ZSBmb3IgU3luY2hyb25vdXMgU3RhdGljIG1lbW9yeQotICovCi0JbGRyCXIxLCBbcjAsICM0XQkJCS8qIE1EUkVGUl9PRkZTRVQgKi8KLQlsZHIJcjIsID0weDAxMDAwRkZGCQkJLyogTURSRUZSX0sxRlJFRSB8IE1EUkVGUl9EUklfTUFTSyAqLwotCWJpYwlyMSwgcjEsIHIyCi0jaWYgZGVmaW5lZCggV0VQX1NEUkFNX0s0UzI4MTYzMyApCi0Jb3JyCXIxLCByMSwgIzQ4CQkJLyogTURSRUZSX0RSSSg0OCkgKi8KLSNlbGlmIGRlZmluZWQoIFdFUF9TRFJBTV9LNFM1NjE2MzMgKQotCW9ycglyMSwgcjEsICMyNAkJCS8qIE1EUkVGUl9EUkkoMjQpICovCi0jZWxzZQotI2Vycm9yIFNEUkFNIGNoaXAgaXMgbm90IGRlZmluZWQKLSNlbmRpZgotCi0Jc3RyCXIxLCBbcjAsICM0XQkJCS8qIE1EUkVGUl9PRkZTRVQgKi8KLQotLyoJU3RlcCAyIC0gb25seSBmb3IgU3luY2hyb25vdXMgU3RhdGljIG1lbW9yeSAoVE9ETykKLSAqCi0gKglTdGVwIDMgLSBzYW1lIGFzIHN0ZXAgNAotICoKLSAqCVN0ZXAgNAotICoKLSAqCVN0ZXAgNC5hIC0gc2V0IE1EUkVGUjpLMVJVTiwgY2xlYXIgTURSRUZSOksxREIyCi0gKi8KLQlvcnIJcjEsIHIxLCAjMHgwMDAxMDAwMAkJLyogTURSRUZSX0sxUlVOICovCi0JYmljCXIxLCByMSwgIzB4MDAwMjAwMDAJCS8qIE1EUkVGUl9LMURCMiAqLwotCXN0cglyMSwgW3IwLCAjNF0JCQkvKiBNRFJFRlJfT0ZGU0VUICovCi0KLS8qCVN0ZXAgNC5iIC0gY2xlYXIgTURSRUZSOlNMRlJTSCAqLwotCWJpYwlyMSwgcjEsICMweDAwNDAwMDAwCQkvKiBNRFJFRlJfU0xGUlNIICovCi0Jc3RyCXIxLCBbcjAsICM0XQkJCS8qIE1EUkVGUl9PRkZTRVQgKi8KLQotLyoJU3RlcCA0LmMgLSBzZXQgTURSRUZSOkUxUElOICovCi0Jb3JyCXIxLCByMSwgIzB4MDAwMDgwMDAJCS8qIE1EUkVGUl9FMVBJTiAqLwotCXN0cglyMSwgW3IwLCAjNF0JCQkvKiBNRFJFRlJfT0ZGU0VUICovCi0KLS8qCVN0ZXAgNC5kIC0gYXV0b21hdGljYWxseSBkb25lCi0gKgotICoJU3RlcHMgNC5lIGFuZCA0LmYgLSBjb25maWd1cmUgU0RSQU0KLSAqLwotI2lmIGRlZmluZWQoIFdFUF9TRFJBTV9LNFMyODE2MzMgKQotCWxkcglyMSwgPTB4MDAwMDBBQTgJCQkvKiBNRENORkdfRFRDMCgyKSB8IE1EQ05GR19ETEFUQ0gwIHwgTURDTkZHX0RDQUMwKDEpIHwgTURDTkZHX0RSQUMwKDEpIHwgTURDTkZHX0ROQjAgKi8KLSNlbGlmIGRlZmluZWQoIFdFUF9TRFJBTV9LNFM1NjE2MzMgKQotCWxkcglyMSwgPTB4MDAwMDBBQzgJCQkvKiBNRENORkdfRFRDMCgyKSB8IE1EQ05GR19ETEFUQ0gwIHwgTURDTkZHX0RDQUMwKDEpIHwgTURDTkZHX0RSQUMwKDIpIHwgTURDTkZHX0ROQjAgKi8KLSNlbHNlCi0jZXJyb3IgU0RSQU0gY2hpcCBpcyBub3QgZGVmaW5lZAotI2VuZGlmCi0Jc3RyCXIxLCBbcjAsICMwXQkJCS8qIE1EQ05GR19PRkZTRVQgKi8KLQotLyoJU3RlcCA1IC0gd2FpdCBhdCBsZWFzdCAyMDAgdXMgZm9yIFNEUkFNCi0gKglzZWUgc2VjdGlvbiBCLiBpbiBbMl0KLSAqLwotCW1vdglyMiwjMHgyNzAwCQkJLyogd2FpdCAyMDAgdXMgQCA5OS41IE1IeiAqLwotMToJc3VicwlyMiwgcjIsICMxCi0JYm5lCTFiCi0KLS8qCVN0ZXAgNiAtIGFmdGVyIHJlc2V0IGRjYWNoZSBpcyBkaXNhYmxlZCwgc28gYXV0b21hdGljYWxseSBkb25lCi0gKgotICoJU3RlcCA3IC0gZWlnaHQgcmVmcmVzaCBjeWNsZXMKLSAqLwotCW1vdglyMiwgIzB4QTAwMDAwMDAKLQlsZHIJcjMsIFtyMl0KLQlsZHIJcjMsIFtyMl0KLQlsZHIJcjMsIFtyMl0KLQlsZHIJcjMsIFtyMl0KLQlsZHIJcjMsIFtyMl0KLQlsZHIJcjMsIFtyMl0KLQlsZHIJcjMsIFtyMl0KLQlsZHIJcjMsIFtyMl0KLQotLyoJU3RlcCA4IC0gd2UgZG9uJ3QgbmVlZCBkY2FjaGUgbm93Ci0gKgotICoJU3RlcCA5IC0gZW5hYmxlIFNEUkFNIHBhcnRpdGlvbiAwCi0gKi8KLQlvcnIJcjEsIHIxLCAjMQkJCS8qIE1EQ05GR19ERTAgKi8KLQlzdHIJcjEsIFtyMCwgIzBdCQkJLyogTURDTkZHX09GRlNFVCAqLwotCi0vKglTdGVwIDEwIC0gd3JpdGUgTURNUlMgKi8KLQltb3YJcjEsICMwCi0Jc3RyCXIxLCBbcjAsICMweDQwXQkJCS8qIE1ETVJTX09GRlNFVCAqLwotCi0vKglTdGVwIDExIC0gb3B0aW9uYWwgKFRPRE8pICovCi0KLQltb3YJcGMscjEwCmRpZmYgLS1naXQgYS9ib2FyZC93ZXBlcDI1MC93ZXBlcDI1MC5jIGIvYm9hcmQvd2VwZXAyNTAvd2VwZXAyNTAuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0MWVhNi4uMDAwMDAwMAotLS0gYS9ib2FyZC93ZXBlcDI1MC93ZXBlcDI1MC5jCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBFVEMgcy5yLm8uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKgotICogV3JpdHRlbiBieSBQZXRlciBGaWd1bGkgPHBlcG9zaEBldGMuc2s+LCAyMDAzLgotICoKLSAqLwotCi0jaW5jbHVkZSA8Y29tbW9uLmg+Ci0jaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KLSNpbmNsdWRlIDxhc20vaW8uaD4KLQotREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7Ci0KLWludCBib2FyZF9pbml0ICh2b2lkKQotewotCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSBNQUNIX1RZUEVfV0VQX0VQMjUwOwotCWdkLT5iZC0+YmlfYm9vdF9wYXJhbXMgPSAweGEwMDAwMDAwOwotLyoKLSAqIFNldHVwIEdQSU8gc3R1ZmYgdG8gZ2V0IHNlcmlhbCB3b3JraW5nCi0gKi8KLSNpZiBkZWZpbmVkKCBDT05GSUdfRkZVQVJUICkKLQl3cml0ZWwoMHg4MCwgR1BEUjEpOwotCXdyaXRlbCgweDgwMTAsIEdBRlIxX0wpOwotI2VsaWYgZGVmaW5lZCggQ09ORklHX0JUVUFSVCApCi0Jd3JpdGVsKDB4ODAwLCBHUERSMSk7Ci0Jd3JpdGVsKDB4OTAwMDAwLCBHQUZSMV9MKTsKLSNlbmRpZgotCXdyaXRlbCgweDIwLCBQU1NSKTsKLQotCXJldHVybiAwOwotfQotCi1pbnQgZHJhbV9pbml0ICh2b2lkKQotewotI2lmICggQ09ORklHX05SX0RSQU1fQkFOS1MgPiAwICkKLQlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBXRVBfU0RSQU1fMTsKLQlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFdFUF9TRFJBTV8xX1NJWkU7Ci0jZW5kaWYKLSNpZiAoIENPTkZJR19OUl9EUkFNX0JBTktTID4gMSApCi0JZ2QtPmJkLT5iaV9kcmFtWzFdLnN0YXJ0ID0gV0VQX1NEUkFNXzI7Ci0JZ2QtPmJkLT5iaV9kcmFtWzFdLnNpemUgPSBXRVBfU0RSQU1fMl9TSVpFOwotI2VuZGlmCi0jaWYgKCBDT05GSUdfTlJfRFJBTV9CQU5LUyA+IDIgKQotCWdkLT5iZC0+YmlfZHJhbVsyXS5zdGFydCA9IFdFUF9TRFJBTV8zOwotCWdkLT5iZC0+YmlfZHJhbVsyXS5zaXplID0gV0VQX1NEUkFNXzNfU0laRTsKLSNlbmRpZgotI2lmICggQ09ORklHX05SX0RSQU1fQkFOS1MgPiAzICkKLQlnZC0+YmQtPmJpX2RyYW1bM10uc3RhcnQgPSBXRVBfU0RSQU1fNDsKLQlnZC0+YmQtPmJpX2RyYW1bM10uc2l6ZSA9IFdFUF9TRFJBTV80X1NJWkU7Ci0jZW5kaWYKLQotCXJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvYm9hcmQveGFlbmlheC9NYWtlZmlsZSBiL2JvYXJkL3hhZW5pYXgvTWFrZWZpbGUKaW5kZXggN2RkMmVhMC4uNTU0OTE1YSAxMDA2NDQKLS0tIGEvYm9hcmQveGFlbmlheC9NYWtlZmlsZQorKysgYi9ib2FyZC94YWVuaWF4L01ha2VmaWxlCkBAIC0yNiwxNyArMjYsMTUgQEAKIExJQgk9ICQob2JqKWxpYiQoQk9BUkQpLmEKIAogQ09CSlMJOj0geGFlbmlheC5vIGZsYXNoLm8KLVNPQkpTCTo9IGxvd2xldmVsX2luaXQubwogCi1TUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCitTUkNTCTo9ICQoQ09CSlM6Lm89LmMpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKLVNPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKIAotJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChTT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAKIGNsZWFuOgotCXJtIC1mICQoU09CSlMpICQoT0JKUykKKwlybSAtZiAkKE9CSlMpCiAKIGRpc3RjbGVhbjoJY2xlYW4KIAlybSAtZiAkKExJQikgY29yZSAqLmJhayAkKG9iaikuZGVwZW5kCmRpZmYgLS1naXQgYS9ib2FyZC94YWVuaWF4L2NvbmZpZy5tayBiL2JvYXJkL3hhZW5pYXgvY29uZmlnLm1rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjM5NzUyLi4wMDAwMDAwCi0tLSBhL2JvYXJkL3hhZW5pYXgvY29uZmlnLm1rCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1DT05GSUdfU1lTX1RFWFRfQkFTRSA9IDB4YTNGQjAwMDAKLSNDT05GSUdfU1lTX1RFWFRfQkFTRSA9IDAKZGlmZiAtLWdpdCBhL2JvYXJkL3hhZW5pYXgvbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQveGFlbmlheC9sb3dsZXZlbF9pbml0LlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3ZTE2MjAuLjAwMDAwMDAKLS0tIGEvYm9hcmQveGFlbmlheC9sb3dsZXZlbF9pbml0LlMKKysrIC9kZXYvbnVsbApAQCAtMSw0MjQgKzAsMCBAQAotIC8qCi0gKiBNb3N0IG9mIHRoaXMgdGFrZW4gZnJvbSBSZWRib290IGhhbF9wbGF0Zm9ybV9zZXR1cC5oIHdpdGggY2xlYW51cAotICoKLSAqIE5PVEU6IEkgaGF2ZW4ndCBjbGVhbiB0aGlzIHVwIGNvbnNpZGVyYWJseSwganVzdCBlbm91Z2ggdG8gZ2V0IGl0Ci0gKiBydW5uaW5nLiBTZWUgaGFsX3BsYXRmb3JtX3NldHVwLmggZm9yIHRoZSBzb3VyY2UuIFNlZQotICogYm9hcmQvY3JhZGxlL2xvd2xldmVsX2luaXQuUyBmb3IgYW5vdGhlciBQWEEyNTAgc2V0dXAgdGhhdCBpcwotICogbXVjaCBjbGVhbmVyLgotICoKLSAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCi0gKiBwcm9qZWN0LgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCi0gKiBNQSAwMjExMS0xMzA3IFVTQQotICovCi0KLSNpbmNsdWRlIDxjb25maWcuaD4KLSNpbmNsdWRlIDx2ZXJzaW9uLmg+Ci0jaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KLQotRFJBTV9TSVpFOiAgLmxvbmcgICBDT05GSUdfU1lTX0RSQU1fU0laRQotCi0vKiB3YWl0IGZvciBjb3Byb2Nlc3NvciB3cml0ZSBjb21wbGV0ZSAqLwotCS5tYWNybyBDUFdBSVQgcmVnCi0JbXJjICBwMTUsMCxccmVnLGMyLGMwLDAKLQltb3YgIFxyZWcsXHJlZwotCXN1YiAgcGMscGMsIzQKLQkuZW5kbQotCi0KLS5nbG9ibCBsb3dsZXZlbF9pbml0Ci1sb3dsZXZlbF9pbml0OgotCi0JbW92CSByMTAsIGxyCi0KLQkvKiBTZXQgdXAgR1BJTyBwaW5zIGZpcnN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQlsZHIJcjAsPUdQU1IwCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dQU1IwX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPUdQU1IxCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dQU1IxX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPUdQU1IyCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dQU1IyX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPUdQQ1IwCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dQQ1IwX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPUdQQ1IxCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dQQ1IxX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPUdQQ1IyCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dQQ1IyX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPUdQRFIwCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dQRFIwX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPUdQRFIxCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dQRFIxX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPUdQRFIyCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dQRFIyX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPUdBRlIwX0wKLQlsZHIJcjEsPUNPTkZJR19TWVNfR0FGUjBfTF9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1HQUZSMF9VCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dBRlIwX1VfVkFMCi0Jc3RyCXIxLFtyMF0KLQotCWxkcglyMCw9R0FGUjFfTAotCWxkcglyMSw9Q09ORklHX1NZU19HQUZSMV9MX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPUdBRlIxX1UKLQlsZHIJcjEsPUNPTkZJR19TWVNfR0FGUjFfVV9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1HQUZSMl9MCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dBRlIyX0xfVkFMCi0Jc3RyCXIxLFtyMF0KLQotCWxkcglyMCw9R0FGUjJfVQotCWxkcglyMSw9Q09ORklHX1NZU19HQUZSMl9VX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPVBTU1IJCS8qIGVuYWJsZSBHUElPIHBpbnMgKi8KLQlsZHIJcjEsPUNPTkZJR19TWVNfUFNTUl9WQUwKLQlzdHIJcjEsW3IwXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIEVuYWJsZSBtZW1vcnkgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogVGhlIHNlcXVlbmNlIGJlbG93IGlzIGJhc2VkIG9uIHRoZSByZWNvbW1lbmRlZCBpbml0IHN0ZXBzICAgICAgICAqLwotCS8qIGRldGFpbGVkIGluIHRoZSBJbnRlbCBQWEEyNTAgT3BlcmF0aW5nIFN5c3RlbXMgRGV2ZWxvcGVycyBHdWlkZSwgKi8KLQkvKiBDaGFwdGVyIDEwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMTogV2FpdCBmb3IgYXQgbGVhc3QgMjAwIG1pY3Jvc2Vkb25kcyB0byBhbGxvdyBpbnRlcm5hbCAgICAgKi8KLQkvKiAgICAgICAgIGNsb2NrcyB0byBzZXR0bGUuIE9ubHkgbmVjZXNzYXJ5IGFmdGVyIGhhcmQgcmVzZXQuLi4gICAgICovCi0JLyogICAgICAgICBGSVhNRTogY2FuIGJlIG9wdGltaXplZCBsYXRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCWxkcglyMywgPU9TQ1IJCS8qIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvICovCi0JbW92CXIyLCAjMAotCXN0cglyMiwgW3IzXQotCWxkcglyNCwgPTB4MzAwCQkvKiByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgICAqLwotCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICAgICAgICAqLwotMToKLQlsZHIJcjIsIFtyM10KLQljbXAJcjQsIHIyCi0JYmd0CTFiCi0KLW1lbV9pbml0OgotCi0JbGRyCXIxLD1NRU1DX0JBU0UJCS8qIGdldCBtZW1vcnkgY29udHJvbGxlciBiYXNlIGFkZHIuICovCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAyYTogSW5pdGlhbGl6ZSBBc3luY2hyb25vdXMgc3RhdGljIG1lbW9yeSBjb250cm9sbGVyICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIE1TQyByZWdpc3RlcnM6IHRpbWluZywgYnVzIHdpZHRoLCBtZW0gdHlwZSAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCS8qIE1TQzA6IG5DUygwLDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLD1DT05GSUdfU1lTX01TQzBfVkFMCi0Jc3RyICAgICByMixbcjEsICNNU0MwX09GRlNFVF0KLQlsZHIgICAgIHIyLFtyMSwgI01TQzBfT0ZGU0VUXQkvKiByZWFkIGJhY2sgdG8gZW5zdXJlIGRhdGEgbGF0Y2hlcyAqLwotCi0JLyogTVNDMTogbkNTKDIsMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsPUNPTkZJR19TWVNfTVNDMV9WQUwKLQlzdHIgICAgIHIyLFtyMSwgI01TQzFfT0ZGU0VUXQotCWxkciAgICAgcjIsW3IxLCAjTVNDMV9PRkZTRVRdCi0KLQkvKiBNU0MyOiBuQ1MoNCw1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiw9Q09ORklHX1NZU19NU0MyX1ZBTAotCXN0ciAgICAgcjIsW3IxLCAjTVNDMl9PRkZTRVRdCi0JbGRyICAgICByMixbcjEsICNNU0MyX09GRlNFVF0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJiOiBJbml0aWFsaXplIENhcmQgSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogTUVDUjogTWVtb3J5IEV4cGFuc2lvbiBDYXJkIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsPUNPTkZJR19TWVNfTUVDUl9WQUwKLQlzdHIgICAgIHIyLFtyMSwgI01FQ1JfT0ZGU0VUXQotCWxkcglyMixbcjEsICNNRUNSX09GRlNFVF0KLQotCS8qIE1DTUVNMDogQ2FyZCBJbnRlcmZhY2Ugc2xvdCAwIHRpbWluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLD1DT05GSUdfU1lTX01DTUVNMF9WQUwKLQlzdHIgICAgIHIyLFtyMSwgI01DTUVNMF9PRkZTRVRdCi0JbGRyCXIyLFtyMSwgI01DTUVNMF9PRkZTRVRdCi0KLQkvKiBNQ01FTTE6IENhcmQgSW50ZXJmYWNlIHNsb3QgMSB0aW1pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiw9Q09ORklHX1NZU19NQ01FTTFfVkFMCi0Jc3RyICAgICByMixbcjEsICNNQ01FTTFfT0ZGU0VUXQotCWxkcglyMixbcjEsICNNQ01FTTFfT0ZGU0VUXQotCi0JLyogTUNBVFQwOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsPUNPTkZJR19TWVNfTUNBVFQwX1ZBTAotCXN0ciAgICAgcjIsW3IxLCAjTUNBVFQwX09GRlNFVF0KLQlsZHIJcjIsW3IxLCAjTUNBVFQwX09GRlNFVF0KLQotCS8qIE1DQVRUMTogQ2FyZCBJbnRlcmZhY2UgQXR0cmlidXRlIFNwYWNlIFRpbWluZywgc2xvdCAxICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLD1DT05GSUdfU1lTX01DQVRUMV9WQUwKLQlzdHIgICAgIHIyLFtyMSwgI01DQVRUMV9PRkZTRVRdCi0JbGRyCXIyLFtyMSwgI01DQVRUMV9PRkZTRVRdCi0KLQkvKiBNQ0lPMDogQ2FyZCBJbnRlcmZhY2UgSS9PIFNwYWNlIFRpbWluZywgc2xvdCAwICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiw9Q09ORklHX1NZU19NQ0lPMF9WQUwKLQlzdHIgICAgIHIyLFtyMSwgI01DSU8wX09GRlNFVF0KLQlsZHIJcjIsW3IxLCAjTUNJTzBfT0ZGU0VUXQotCi0JLyogTUNJTzE6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMSAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsPUNPTkZJR19TWVNfTUNJTzFfVkFMCi0Jc3RyICAgICByMixbcjEsICNNQ0lPMV9PRkZTRVRdCi0JbGRyCXIyLFtyMSwgI01DSU8xX09GRlNFVF0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJjOiBXcml0ZSBGTFlDTkZHICBGSVhNRTogd2hhdCdzIHRoYXQ/Pz8gICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMmQ6IEluaXRpYWxpemUgVGltaW5nIGZvciBTeW5jIE1lbW9yeSAoU0RDTEswKSAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQlAIGdldCB0aGUgbWRyZWZyIHNldHRpbmdzCi0JbGRyICAgICByNCw9Q09ORklHX1NZU19NRFJFRlJfVkFMCi0KLQlAIHdyaXRlIGJhY2sgbWRyZWZyCi0Jc3RyICAgICByNCxbcjEsICNNRFJFRlJfT0ZGU0VUXQotCWxkciAgICAgcjQsW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDM6IEluaXRpYWxpemUgU3luY2hyb25vdXMgU3RhdGljIE1lbW9yeSAoRmxhc2gvUGVyaXBoZXJhbHMpICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogSW5pdGlhbGl6ZSBTWENORkcgcmVnaXN0ZXIuIEFzc2VydCB0aGUgZW5hYmxlIGJpdHMgICAgICAgICAgICAgICAqLwotCi0JLyogV3JpdGUgU1hNUlMgdG8gY2F1c2UgYW4gTVJTIGNvbW1hbmQgdG8gYWxsIGVuYWJsZWQgYmFua3Mgb2YgICAgICAqLwotCS8qIHN5bmNocm9ub3VzIHN0YXRpYyBtZW1vcnkuIE5vdGUgdGhhdCBTWExDUiBuZWVkIG5vdCBiZSB3cml0dGVuICAgKi8KLQkvKiBhdCB0aGlzIHRpbWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQkvKiBGSVhNRTogd2UgdXNlIGFzeW5jIG1vZGUgZm9yIG5vdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCA0OiBJbml0aWFsaXplIFNEUkFNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCUAgc2V0IEsxUlVOIGZvciBiYW5rIDAKLQlACi0Jb3JyICAgcjQsICByNCwgICNNRFJFRlJfSzFSVU4KLQotCUAgd3JpdGUgYmFjayBtZHJlZnIKLQlACi0Jc3RyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0JbGRyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQlAIGRlYXNzZXJ0IFNMRlJTSAotCUAKLQliaWMgICAgIHI0LCAgcjQsICAjTURSRUZSX1NMRlJTSAotCi0JQCB3cml0ZSBiYWNrIG1kcmVmcgotCUAKLQlzdHIgICAgIHI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQlsZHIgICAgIHI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCUAgYXNzZXJ0IEUxUElOCi0JQCBpZiBFMFBJTiBpcyBhbHNvIHVzZWQ6CSAjKE1EUkVGUl9FMVBJTnxNRFJFRlJfRTBQSU4pCi0Jb3JyICAgICByNCwgIHI0LCAjKE1EUkVGUl9FMVBJTikKLQotCUAgd3JpdGUgYmFjayBtZHJlZnIKLQlACi0Jc3RyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0JbGRyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0Jbm9wCi0Jbm9wCi0KLQkvKiBTdGVwIDRkOgkJCQkJCQkqLwotCS8qIGZldGNoIHBsYXRmb3JtIHZhbHVlIG9mIG1kY25mZwkJCQkqLwotCUAKLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfTURDTkZHX1ZBTAotCi0JQCBkaXNhYmxlIGFsbCBzZHJhbSBiYW5rcwotCUAKLQliaWMgICAgIHIyLCAgcjIsICAjKE1EQ05GR19ERTAgfCBNRENORkdfREUxKQotCWJpYyAgICAgcjIsICByMiwgICMoTURDTkZHX0RFMiB8IE1EQ05GR19ERTMpCi0KLQlAIHByb2dyYW0gYmFua3MgMC8xIGZvciBidXMgd2lkdGgKLQlACi0JYmljICAgcjIsICByMiwgICNNRENORkdfRFdJRDAgICAgICBAMD0zMi1iaXQKLQotCUAgd3JpdGUgaW5pdGlhbCB2YWx1ZSBvZiBtZGNuZmcsIHcvbyBlbmFibGluZyBzZHJhbSBiYW5rcwotCUAKLQlzdHIgICAgIHIyLCAgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotCS8qIFN0ZXAgNGU6IFdhaXQgZm9yIHRoZSBjbG9jayB0byB0aGUgU0RSQU1zIHRvIHN0YWJpbGl6ZSwgICAgICAgICAgKi8KLQkvKiAgICAgICAgICAxMDAuLjIwMCC1c2VjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQlsZHIJcjMsID1PU0NSCQkvKiByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybyAqLwotCW1vdglyMiwgIzAKLQlzdHIJcjIsIFtyM10KLQlsZHIJcjQsID0weDMwMAkJLyogcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsICAgKi8KLQkJCQkJLyogc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eSAgICAgICAgKi8KLTE6Ci0JbGRyCXIyLCBbcjNdCi0JY21wCXI0LCByMgotCWJndAkxYgotCi0KLQkvKiBTdGVwIDRmOiBUcmlnZ2VyIGEgbnVtYmVyICh1c3VhbGx5IDgpIHJlZnJlc2ggY3ljbGVzIGJ5ICAgICAgICAgICovCi0JLyogICAgICAgICAgYXR0ZW1wdGluZyBub24tYnVyc3QgcmVhZCBvciB3cml0ZSBhY2Nlc3NlcyB0byBkaXNhYmxlZCAqLwotCS8qICAgICAgICAgIFNEUkFNLCBhcyBjb21tb25seSBzcGVjaWZpZWQgaW4gdGhlIHBvd2VyIHVwIHNlcXVlbmNlICAgKi8KLQkvKiAgICAgICAgICBkb2N1bWVudGVkIGluIFNEUkFNIGRhdGEgc2hlZXRzLiBUaGUgYWRkcmVzcyhlcykgdXNlZCAgICovCi0JLyogICAgICAgICAgZm9yIHRoaXMgcHVycG9zZSBtdXN0IG5vdCBiZSBjYWNoZWFibGUuICAgICAgICAgICAgICAgICAqLwotCi0JbGRyCXIzLAk9Q09ORklHX1NZU19EUkFNX0JBU0UKLQlzdHIJcjIsCVtyM10KLQlzdHIJcjIsCVtyM10KLQlzdHIJcjIsCVtyM10KLQlzdHIJcjIsCVtyM10KLQlzdHIJcjIsCVtyM10KLQlzdHIJcjIsCVtyM10KLQlzdHIJcjIsCVtyM10KLQlzdHIJcjIsCVtyM10KLQlzdHIJcjIsCVtyM10KLQotCi0JLyogU3RlcCA0ZzogV3JpdGUgTURDTkZHIHdpdGggZW5hYmxlIGJpdHMgYXNzZXJ0ZWQgICAgICAgICAgICAgICAgICAqLwotCS8qIGdldCBtZW1vcnkgY29udHJvbGxlciBiYXNlIGFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIxLCAgPU1FTUNfQkFTRQotCi0JQGZldGNoIGN1cnJlbnQgbWRjbmZnIHZhbHVlCi0JQAotCWxkciAgICAgcjMsICBbcjEsICNNRENORkdfT0ZGU0VUXQotCi0JQGVuYWJsZSBzZHJhbSBiYW5rIDAgaWYgaW5zdGFsbGVkIChtdXN0IGRvIGZvciBhbnkgcG9wdWxhdGVkIGJhbmspCi0JQAotCW9yciAgICAgcjMsICByMywgICNNRENORkdfREUwCi0KLQlAd3JpdGUgYmFjayBtZGNuZmcsIGVuYWJsaW5nIHRoZSBzZHJhbSBiYW5rKHMpCi0JQAotCXN0ciAgICAgcjMsICBbcjEsICNNRENORkdfT0ZGU0VUXQotCi0JLyogU3RlcCA0aDogV3JpdGUgTURNUlMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JbGRyICAgICByMiwJPUNPTkZJR19TWVNfTURNUlNfVkFMCi0Jc3RyICAgICByMiwJW3IxLCAjTURNUlNfT0ZGU0VUXQotCi0KLQkvKiBXZSBhcmUgZmluaXNoZWQgd2l0aCBJbnRlbCdzIG1lbW9yeSBjb250cm9sbGVyIGluaXRpYWxpc2F0aW9uICAgICovCi0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBEaXNhYmxlIChtYXNrKSBhbGwgaW50ZXJydXB0cyBhdCBpbnRlcnJ1cHQgY29udHJvbGxlciAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1pbml0aXJxczoKLQltb3YgICAgIHIxLCAjMAkJLyogY2xlYXIgaW50LiBsZXZlbCByZWdpc3RlciAoSVJRLCBub3QgRklRKSAqLwotCWxkciAgICAgcjIsICA9SUNMUgotCXN0ciAgICAgcjEsICBbcjJdCi0KLQlsZHIgICAgIHIxLCAgPUNPTkZJR19TWVNfSUNNUl9WQUwgLyogbWFzayBhbGwgaW50ZXJydXB0cyBhdCB0aGUgY29udHJvbGxlciAqLwotCWxkciAgICAgcjIsICA9SUNNUgotCXN0ciAgICAgcjEsICBbcjJdCi0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBDbG9jayBpbml0aWFsaXNhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1pbml0Y2xrczoKLQotCS8qIERpc2FibGUgdGhlIHBlcmlwaGVyYWwgY2xvY2tzLCBhbmQgc2V0IHRoZSBjb3JlIGNsb2NrIGZyZXF1ZW5jeSAgKi8KLQkvKiAoaGFyZC1jb2RpbmcgYXQgMzk4LjEyTUh6IGZvciBub3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogVHVybiBPZmYgQUxMIG9uLWNoaXAgcGVyaXBoZXJhbCBjbG9ja3MgZm9yIHJlLWNvbmZpZ3VyYXRpb24gICAgICAqLwotCS8qIE5vdGU6IFNlZSBsYWJlbCAnRU5BQkxFQ0xLUycgZm9yIHRoZSByZS1lbmFibGluZyAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIxLCAgPUNLRU4KLQltb3YgICAgIHIyLCAgIzAKLQlzdHIgICAgIHIyLCAgW3IxXQotCi0KLQkvKiBkZWZhdWx0IHZhbHVlCQkJCQkJICAgICovCi0JbGRyICAgICByMiwgPShDQ0NSX0wyN3xDQ0NSX00yfENDQ1JfTjEwKSAgLyogREVGQVVMVDogezIwMC8yMDAvMTAwfSAqLwotCi0JLyogLi4uIGFuZCB3cml0ZSB0aGUgY29yZSBjbG9jayBjb25maWcgcmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjEsICA9Q0NDUgotCXN0ciAgICAgcjIsICBbcjFdCi0KLSNpZmRlZiBSVEMKLQkvKiBlbmFibGUgdGhlIDMyS2h6IG9zY2lsbGF0b3IgZm9yIFJUQyBhbmQgUG93ZXJNYW5hZ2VyICAgICAgICAgICAgICovCi0KLQlsZHIgICAgIHIxLCAgPU9TQ0MKLQltb3YgICAgIHIyLCAgI09TQ0NfT09OCi0Jc3RyICAgICByMiwgIFtyMV0KLQotCS8qIE5PVEU6ICBzcGluIGhlcmUgdW50aWwgT1NDQy5PT0sgZ2V0IHNldCwgbWVhbmluZyB0aGUgUExMICAgICAgICAgKi8KLQkvKiBoYXMgc2V0dGxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi02MDoKLQlsZHIgICAgIHIyLCBbcjFdCi0JYW5kcyAgICByMiwgcjIsICMxCi0JYmVxICAgICA2MGIKLSNlbmRpZgotCi0JQCBUdXJuIG9uIG5lZWRlZCBjbG9ja3MKLQlACi10ZXN0OgotCWxkciAgICAgcjEsICA9Q0tFTgotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19DS0VOX1ZBTAotCXN0ciAgICAgcjIsICBbcjFdCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIFNhdmUgU0RSQU0gc2l6ZSA/Ki8KLQlsZHIJcjEsID1EUkFNX1NJWkUKLQlzdHIJcjgsIFtyMV0KLQotCS8qIEZJWE1FICovCi0KLSNkZWZpbmUgTk9ERUJVRwotI2lmZGVmIE5PREVCVUcKLQkvKkRpc2FibGUgc29mdHdhcmUgYW5kIGRhdGEgYnJlYWtwb2ludHMgKi8KLQltb3YJcjAsIzAKLQltY3IJcDE1LDAscjAsYzE0LGM4LDAgIC8qIGliY3IwICovCi0JbWNyCXAxNSwwLHIwLGMxNCxjOSwwICAvKiBpYmNyMSAqLwotCW1jcglwMTUsMCxyMCxjMTQsYzQsMCAgLyogZGJjb24gKi8KLQotCS8qRW5hYmxlIGFsbCBkZWJ1ZyBmdW5jdGlvbmFsaXR5ICovCi0JbW92CXIwLCMweDgwMDAwMDAwCi0JbWNyCXAxNCwwLHIwLGMxMCxjMCwwICAvKiBkY3NyICovCi0KLSNlbmRpZgotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIEVuZCBsb3dsZXZlbF9pbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotZW5kbG93bGV2ZWxfaW5pdDoKLQotCW1vdiAgICAgcGMsIGxyCmRpZmYgLS1naXQgYS9ib2FyZC94YWVuaWF4L3hhZW5pYXguYyBiL2JvYXJkL3hhZW5pYXgveGFlbmlheC5jCmluZGV4IDRjMTljNGQuLjQwYjBmM2IgMTAwNjQ0Ci0tLSBhL2JvYXJkL3hhZW5pYXgveGFlbmlheC5jCisrKyBiL2JvYXJkL3hhZW5pYXgveGFlbmlheC5jCkBAIC0zOSw4ICszOSw5IEBACiAKIGludCBib2FyZF9pbml0ICh2b2lkKQogewotCS8qIG1lbW9yeSBhbmQgY3B1LXNwZWVkIGFyZSBzZXR1cCBiZWZvcmUgcmVsb2NhdGlvbiAqLwotCS8qIHNvIHdlIGRvIF9ub3RoaW5nXyBoZXJlICovCisJLyogV2UgaGF2ZSBSQU0sIGRpc2FibGUgY2FjaGUgKi8KKwlkY2FjaGVfZGlzYWJsZSgpOworCWljYWNoZV9kaXNhYmxlKCk7CiAKIAkvKiBhcmNoIG51bWJlciBvZiB4YWVuaWF4ICovCiAJZ2QtPmJkLT5iaV9hcmNoX251bWJlciA9IDU4NTsKQEAgLTU4LDE5ICs1OSwxOCBAQAogCXJldHVybiAwOwogfQogCitleHRlcm4gdm9pZCBweGFfZHJhbV9pbml0KHZvaWQpOworaW50IGRyYW1faW5pdCh2b2lkKQoreworCXB4YV9kcmFtX2luaXQoKTsKKwlnZC0+cmFtX3NpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKKwlyZXR1cm4gMDsKK30KIAotaW50IGRyYW1faW5pdCAodm9pZCkKK3ZvaWQgZHJhbV9pbml0X2JhbmtzaXplKHZvaWQpCiB7CiAJZ2QtPmJkLT5iaV9kcmFtWzBdLnN0YXJ0ID0gUEhZU19TRFJBTV8xOwogCWdkLT5iZC0+YmlfZHJhbVswXS5zaXplID0gUEhZU19TRFJBTV8xX1NJWkU7Ci0JLyoJZ2QtPmJkLT5iaV9kcmFtWzFdLnN0YXJ0ID0gUEhZU19TRFJBTV8yOyovCi0JLyoJZ2QtPmJkLT5iaV9kcmFtWzFdLnNpemUgPSBQSFlTX1NEUkFNXzJfU0laRTsqLwotCS8qCWdkLT5iZC0+YmlfZHJhbVsyXS5zdGFydCA9IFBIWVNfU0RSQU1fMzsgKi8KLQkvKglnZC0+YmQtPmJpX2RyYW1bMl0uc2l6ZSA9IFBIWVNfU0RSQU1fM19TSVpFOyAqLwotCS8qCWdkLT5iZC0+YmlfZHJhbVszXS5zdGFydCA9IFBIWVNfU0RSQU1fNDsgKi8KLQkvKglnZC0+YmQtPmJpX2RyYW1bM10uc2l6ZSA9IFBIWVNfU0RSQU1fNF9TSVpFOyAqLwotCi0JcmV0dXJuIDA7CiB9CiAKICNpZmRlZiBDT05GSUdfQ01EX05FVApkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL2NvbW1vbi9NYWtlZmlsZSBiL2JvYXJkL3hlcy9jb21tb24vTWFrZWZpbGUKaW5kZXggZDAyMjgzMS4uMTZlMGI2NiAxMDA2NDQKLS0tIGEvYm9hcmQveGVzL2NvbW1vbi9NYWtlZmlsZQorKysgYi9ib2FyZC94ZXMvY29tbW9uL01ha2VmaWxlCkBAIC0zMiw3ICszMiwxMSBAQAogQ09CSlMtJChDT05GSUdfRlNMX1BDSV9JTklUKQkrPSBmc2xfOHh4eF9wY2kubwogQ09CSlMtJChDT05GSUdfTVBDODU3MikJCSs9IGZzbF84eHh4X2Nsay5vCiBDT0JKUy0kKENPTkZJR19NUEM4Nnh4KQkJKz0gZnNsXzh4eHhfY2xrLm8KK0NPQkpTLSQoQ09ORklHX1AyMDIwKQkJKz0gZnNsXzh4eHhfY2xrLm8KIENPQkpTLSQoQ09ORklHX0ZTTF9ERFIyKQkrPSBmc2xfOHh4eF9kZHIubworQ09CSlMtJChDT05GSUdfRlNMX0REUjMpCSs9IGZzbF84eHh4X2Rkci5vCitDT0JKUy0kKENPTkZJR19NUEM4NXh4KQkJKz0gZnNsXzh4eHhfbWlzYy5vIGJvYXJkLm8KK0NPQkpTLSQoQ09ORklHX01QQzg2eHgpCQkrPSBmc2xfOHh4eF9taXNjLm8gYm9hcmQubwogQ09CSlMtJChDT05GSUdfTkFORF9BQ1RMKQkrPSBhY3RsX25hbmQubwogCiBTUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlMteToubz0uYykKZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy9jb21tb24vYm9hcmQuYyBiL2JvYXJkL3hlcy9jb21tb24vYm9hcmQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzhmMGE2Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQveGVzL2NvbW1vbi9ib2FyZC5jCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOSBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgImZzbF84eHh4X21pc2MuaCIKKworaW50IGNoZWNrYm9hcmQodm9pZCkKK3sKKwljaGFyIG5hbWVbXSA9IENPTkZJR19TWVNfQk9BUkRfTkFNRTsKKwljaGFyICpzOworCisjaWZkZWYgQ09ORklHX1NZU19GT1JNX0NVU1RPTQorCXMgPSAiQ3VzdG9tIjsKKyNlbGlmIENPTkZJR19TWVNfRk9STV82VV9DUENJCisJcyA9ICI2VSBDb21wYWN0UENJIjsKKyNlbGlmIENPTkZJR19TWVNfRk9STV9BVENBX1BNQworCXMgPSAiQVRDQSB3L1BNQyI7CisjZWxpZiBDT05GSUdfU1lTX0ZPUk1fQVRDQV9BTUMKKwlzID0gIkFUQ0Egdy9BTUMiOworI2VsaWYgQ09ORklHX1NZU19GT1JNX1ZNRQorCXMgPSAiVk1FIjsKKyNlbGlmIENPTkZJR19TWVNfRk9STV82VV9WUFgKKwlzID0gIjZVIFZQWCI7CisjZWxpZiBDT05GSUdfU1lTX0ZPUk1fUE1DCisJcyA9ICJQTUMiOworI2VsaWYgQ09ORklHX1NZU19GT1JNX1BDSQorCXMgPSAiUENJIjsKKyNlbGlmIENPTkZJR19TWVNfRk9STV8zVV9DUENJCisJcyA9ICIzVSBDb21wYWN0UENJIjsKKyNlbGlmIENPTkZJR19TWVNfRk9STV9BTUMKKwlzID0gIkFkdmFuY2VkTUMiOworI2VsaWYgQ09ORklHX1NZU19GT1JNX1hNQworCXMgPSAiWE1DIjsKKyNlbGlmIENPTkZJR19TWVNfRk9STV9QTUNfWE1DCisJcyA9ICJQTUMvWE1DIjsKKyNlbGlmIENPTkZJR19TWVNfRk9STV9QQ0lfRVhQUkVTUworCXMgPSAiUENJIEV4cHJlc3MiOworI2VsaWYgQ09ORklHX1NZU19GT1JNXzNVX1ZQWAorCXMgPSAiM1UgVlBYIjsKKyNlbHNlCisjZXJyb3IgIkZvcm0gZmFjdG9yIG5vdCBkZWZpbmVkIgorI2VuZGlmCisKKwluYW1lW3N0cmxlbihuYW1lKSAtIDFdICs9IGdldF9ib2FyZF9kZXJpdmF0aXZlKCk7CisJcHJpbnRmKCJCb2FyZDogWC1FUyAlcyAlcyBTQkNcbiIsIG5hbWUsIHMpOworCisJLyogRGlzcGxheSBib2FyZCBzcGVjaWZpYyBpbmZvcm1hdGlvbiAqLworCXB1dHMoIiAgICAgICAiKTsKKwlpZiAoKHMgPSBnZXRlbnYoImJvYXJkX3JldiIpKSkKKwkJcHJpbnRmKCJSZXYgJXMsICIsIHMpOworCWlmICgocyA9IGdldGVudigic2VyaWFsIyIpKSkKKwkJcHJpbnRmKCJTZXJpYWwjICVzLCAiLCBzKTsKKwlpZiAoKHMgPSBnZXRlbnYoImJvYXJkX2NmZyIpKSkKKwkJcHJpbnRmKCJDZmcgJXMiLCBzKTsKKwlwdXRzKCJcbiIpOworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC94ZXMvY29tbW9uL2ZzbF84eHh4X2Nsay5jIGIvYm9hcmQveGVzL2NvbW1vbi9mc2xfOHh4eF9jbGsuYwppbmRleCBmNGExN2I3Li4yMGQwYTMwIDEwMDY0NAotLS0gYS9ib2FyZC94ZXMvY29tbW9uL2ZzbF84eHh4X2Nsay5jCisrKyBiL2JvYXJkL3hlcy9jb21tb24vZnNsXzh4eHhfY2xrLmMKQEAgLTM4LDcgKzM4LDExIEBACiAJaWYgKGluX2JlMzIoJmd1ci0+Z3Bwb3JjcikgJiAweDEwMDAwKQogCQlyZXR1cm4gNjY2NjY2NjY7CiAJZWxzZQorI2lmZGVmIENPTkZJR19QMjAyMAorCQlyZXR1cm4gMTAwMDAwMDAwOworI2Vsc2UKIAkJcmV0dXJuIDUwMDAwMDAwOworI2VuZGlmCiB9CiAKICNpZmRlZiBDT05GSUdfTVBDODV4eApAQCAtNTQsNiArNTgsMTMgQEAKIAlpZiAoZGRyX3JhdGlvID09IDB4NykKIAkJcmV0dXJuIGdldF9ib2FyZF9zeXNfY2xrKGR1bW15KTsKIAorI2lmZGVmIENPTkZJR19QMjAyMAorCWlmIChpbl9iZTMyKCZndXItPmdwcG9yY3IpICYgMHgyMDAwMCkKKwkJcmV0dXJuIDY2NjY2NjY2OworCWVsc2UKKwkJcmV0dXJuIDEwMDAwMDAwMDsKKyNlbHNlCiAJcmV0dXJuIDY2NjY2NjY2OworI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy9jb21tb24vZnNsXzh4eHhfbWlzYy5jIGIvYm9hcmQveGVzL2NvbW1vbi9mc2xfOHh4eF9taXNjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdmYTY5NQotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3hlcy9jb21tb24vZnNsXzh4eHhfbWlzYy5jCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vbW11Lmg+CisjaWZkZWYgQ09ORklHX1BDQTk1M1gKKyNpbmNsdWRlIDxwY2E5NTN4Lmg+CisKKy8qCisgKiBEZXRlcm1pbmUgaWYgYSBib2FyZCdzIGZsYXNoZXMgYXJlIHdyaXRlIHByb3RlY3RlZAorICovCitpbnQgYm9hcmRfZmxhc2hfd3Bfb24odm9pZCkKK3sKKwlpZiAocGNhOTUzeF9nZXRfdmFsKENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjApICYKKwkJCUNPTkZJR19TWVNfUENBOTUzWF9OVk1fV1ApCisJCXJldHVybiAxOworCisJcmV0dXJuIDA7Cit9CisjZW5kaWYKKworLyoKKyAqIFJldHVybiBhIGJvYXJkJ3MgZGVyaXZhdGl2ZSBtb2RlbCBudW1iZXIuICBGb3IgZXhhbXBsZToKKyAqIHJldHVybiAyIGZvciB0aGUgWFBlZGl0ZTUzNzIgYW5kIHJldHVybiAxIGZvciB0aGUgWFBlZGl0ZTUyMDEuCisgKi8KK3VpbnQgZ2V0X2JvYXJkX2Rlcml2YXRpdmUodm9pZCkKK3sKKyNpZiBkZWZpbmVkKENPTkZJR19NUEM4NXh4KQorICAgICAgIHZvbGF0aWxlIGNjc3JfZ3VyX3QgKmd1ciA9ICh2b2lkICopQ09ORklHX1NZU19NUEM4NXh4X0dVVFNfQUREUjsKKyNlbGlmIGRlZmluZWQoQ09ORklHX01QQzg2eHgpCisgICAgICAgdm9sYXRpbGUgaW1tYXBfdCAqaW1tYXAgPSAoaW1tYXBfdCAqKUNPTkZJR19TWVNfQ0NTUkJBUjsKKyAgICAgICB2b2xhdGlsZSBjY3NyX2d1cl90ICpndXIgPSAmaW1tYXAtPmltX2d1cjsKKyNlbmRpZgorCisgICAgICAgLyoKKyAgICAgICAgKiBUaGUgdG9wIDQgbGluZXMgb2YgdGhlIGxvY2FsIGJ1cyBhZGRyZXNzIGFyZSBwdWxsZWQgbG93L2hpZ2ggYW5kCisgICAgICAgICogY2FuIGJlIHJlYWQgdG8gZGV0ZXJtaW5lIHRoZSBsZWFzdCBzaWduaWZpY2FudCBkaWdpdCBvZiBhIGJvYXJkJ3MKKyAgICAgICAgKiBtb2RlbCBudW1iZXIuCisgICAgICAgICovCisgICAgICAgcmV0dXJuIGd1ci0+Z3Bwb3JjciA+PiAyODsKK30KKworCmRpZmYgLS1naXQgYS9ib2FyZC90cml6ZXBzaXYvcHhhdm9sdGFnZS5TIGIvYm9hcmQveGVzL2NvbW1vbi9mc2xfOHh4eF9taXNjLmgKc2ltaWxhcml0eSBpbmRleCA3NCUKY29weSBmcm9tIGJvYXJkL3RyaXplcHNpdi9weGF2b2x0YWdlLlMKY29weSB0byBib2FyZC94ZXMvY29tbW9uL2ZzbF84eHh4X21pc2MuaAppbmRleCA5NjU5YzJiLi5lY2M3MGRhIDEwMDY0NAotLS0gYS9ib2FyZC90cml6ZXBzaXYvcHhhdm9sdGFnZS5TCisrKyBiL2JvYXJkL3hlcy9jb21tb24vZnNsXzh4eHhfbWlzYy5oCkBAIC0xLDYgKzEsNSBAQAogLyoKLSAqIChDKSBDb3B5cmlnaHQgMjAwNwotICogU3RlZmFubyBCYWJpYywgREVOWCBHbWJoLCBzYmFiaWNAZGVueC5kZQorICogQ29weXJpZ2h0IDIwMDggRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIEluYy4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTEyLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCiAgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogICoKICAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCkBAIC0yMSw5ICsyMCw5IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLSNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgorI2lmbmRlZiBfX0ZTTF84WFhYX01JU0NfSF9fXworI2RlZmluZSBfX0ZTTF84WFhYX01JU0NfSF9fXwogCi0JCS5nbG9iYWwJaW5pdFBYQXZvbHRhZ2UKK3VpbnQgZ2V0X2JvYXJkX2Rlcml2YXRpdmUodm9pZCk7CiAKLWluaXRQWEF2b2x0YWdlOgotCQltb3YJcGMsIGxyCisjZW5kaWYgLyogX19GU0xfOFhYWF9NSVNDX0hfXyAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL2NvbW1vbi9mc2xfOHh4eF9wY2kuYyBiL2JvYXJkL3hlcy9jb21tb24vZnNsXzh4eHhfcGNpLmMKaW5kZXggZWNlNzg4Mi4uZjQyNWNlZSAxMDA2NDQKLS0tIGEvYm9hcmQveGVzL2NvbW1vbi9mc2xfOHh4eF9wY2kuYworKysgYi9ib2FyZC94ZXMvY29tbW9uL2ZzbF84eHh4X3BjaS5jCkBAIC0yNSwxMCArMjUsMTAgQEAKICNpbmNsdWRlIDxwY2kuaD4KICNpbmNsdWRlIDxhc20vZnNsX3BjaS5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8bGliZmR0Lmg+CiAjaW5jbHVkZSA8ZmR0X3N1cHBvcnQuaD4KIAotaW50IGZpcnN0X2ZyZWVfYnVzbm8gPSAwOwogCiAjaWZkZWYgQ09ORklHX1BDSTEKIHN0YXRpYyBzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgcGNpMV9ob3NlOwpAQCAtNDMsMTExICs0Myw2IEBACiBzdGF0aWMgc3RydWN0IHBjaV9jb250cm9sbGVyIHBjaWUzX2hvc2U7CiAjZW5kaWYKIAotI2lmZGVmIENPTkZJR19NUEM4NTcyCi0vKiBDb3JyZWxhdGUgaG9zdC9hZ2VudCBQT1IgYml0cyB0byB1c2FibGUgaW5mby4gVGFibGUgNC0xNCAqLwotc3RydWN0IGhvc3RfYWdlbnRfY2ZnX3QgewotCXVjaGFyIHBjaWVfcm9vdFszXTsKLQl1Y2hhciByaW9faG9zdDsKLX0gaG9zdF9hZ2VudF9jZmdbOF0gPSB7Ci0Je3swLCAwLCAwfSwgMH0sCi0Je3swLCAxLCAxfSwgMX0sCi0Je3sxLCAwLCAxfSwgMH0sCi0Je3sxLCAxLCAwfSwgMX0sCi0Je3swLCAwLCAxfSwgMH0sCi0Je3swLCAxLCAwfSwgMX0sCi0Je3sxLCAwLCAwfSwgMH0sCi0Je3sxLCAxLCAxfSwgMX0KLX07Ci0KLS8qIENvcnJlbGF0ZSBwb3J0IHdpZHRoIFBPUiBiaXRzIHRvIHVzYWJsZSBpbmZvLiBUYWJsZSA0LTE1ICovCi1zdHJ1Y3QgaW9fcG9ydF9jZmdfdCB7Ci0JdWNoYXIgcGNpZV93aWR0aFszXTsKLQl1Y2hhciByaW9fd2lkdGg7Ci19IGlvX3BvcnRfY2ZnWzE2XSA9IHsKLQl7ezAsIDAsIDB9LCAwfSwKLQl7ezAsIDAsIDB9LCAwfSwKLQl7ezQsIDAsIDB9LCAwfSwKLQl7ezQsIDQsIDB9LCAwfSwKLQl7ezAsIDAsIDB9LCAwfSwKLQl7ezAsIDAsIDB9LCAwfSwKLQl7ezAsIDAsIDB9LCA0fSwKLQl7ezQsIDIsIDJ9LCAwfSwKLQl7ezAsIDAsIDB9LCAwfSwKLQl7ezAsIDAsIDB9LCAwfSwKLQl7ezAsIDAsIDB9LCAwfSwKLQl7ezQsIDAsIDB9LCA0fSwKLQl7ezQsIDAsIDB9LCA0fSwKLQl7ezAsIDAsIDB9LCA0fSwKLQl7ezAsIDAsIDB9LCA0fSwKLQl7ezgsIDAsIDB9LCAwfSwKLX07Ci0jZWxpZiBkZWZpbmVkIENPTkZJR19NUEM4NTQ4Ci0vKiBDb3JyZWxhdGUgaG9zdC9hZ2VudCBQT1IgYml0cyB0byB1c2FibGUgaW5mby4gVGFibGUgNC0xMiAqLwotc3RydWN0IGhvc3RfYWdlbnRfY2ZnX3QgewotCXVjaGFyIHBjaV9ob3N0WzJdOwotCXVjaGFyIHBjaWVfcm9vdFsxXTsKLQl1Y2hhciByaW9faG9zdDsKLX0gaG9zdF9hZ2VudF9jZmdbOF0gPSB7Ci0Je3sxLCAxfSwgezB9LCAwfSwKLQl7ezEsIDF9LCB7MX0sIDB9LAotCXt7MSwgMX0sIHswfSwgMX0sCi0Je3swLCAwfSwgezB9LCAwfSwgLyogcmVzZXJ2ZWQgKi8KLQl7ezAsIDF9LCB7MX0sIDB9LAotCXt7MSwgMX0sIHsxfSwgMH0sCi0Je3swLCAxfSwgezF9LCAxfSwKLQl7ezEsIDF9LCB7MX0sIDF9Ci19OwotCi0vKiBDb3JyZWxhdGUgcG9ydCB3aWR0aCBQT1IgYml0cyB0byB1c2FibGUgaW5mby4gVGFibGUgNC0xMyAqLwotc3RydWN0IGlvX3BvcnRfY2ZnX3QgewotCXVjaGFyIHBjaWVfd2lkdGhbMV07Ci0JdWNoYXIgcmlvX3dpZHRoOwotfSBpb19wb3J0X2NmZ1s4XSA9IHsKLQl7ezB9LCAwfSwKLQl7ezB9LCAwfSwKLQl7ezB9LCAwfSwKLQl7ezR9LCA0fSwKLQl7ezR9LCA0fSwKLQl7ezB9LCA0fSwKLQl7ezB9LCA0fSwKLQl7ezh9LCAwfSwKLX07Ci0jZWxpZiBkZWZpbmVkIENPTkZJR19NUEM4Nnh4Ci0vKiBDb3JyZWxhdGUgaG9zdC9hZ2VudCBQT1IgYml0cyB0byB1c2FibGUgaW5mby4gVGFibGUgNC0xNyAqLwotc3RydWN0IGhvc3RfYWdlbnRfY2ZnX3QgewotCXVjaGFyIHBjaWVfcm9vdFsyXTsKLQl1Y2hhciByaW9faG9zdDsKLX0gaG9zdF9hZ2VudF9jZmdbOF0gPSB7Ci0Je3swLCAwfSwgMH0sCi0Je3sxLCAwfSwgMX0sCi0Je3swLCAxfSwgMH0sCi0Je3sxLCAxfSwgMX0KLX07Ci0KLS8qIENvcnJlbGF0ZSBwb3J0IHdpZHRoIFBPUiBiaXRzIHRvIHVzYWJsZSBpbmZvLiBUYWJsZSA0LTE2ICovCi1zdHJ1Y3QgaW9fcG9ydF9jZmdfdCB7Ci0JdWNoYXIgcGNpZV93aWR0aFsyXTsKLQl1Y2hhciByaW9fd2lkdGg7Ci19IGlvX3BvcnRfY2ZnWzE2XSA9IHsKLQl7ezAsIDB9LCAwfSwKLQl7ezAsIDB9LCAwfSwKLQl7ezgsIDB9LCAwfSwKLQl7ezgsIDh9LCAwfSwKLQl7ezAsIDB9LCAwfSwKLQl7ezgsIDB9LCA0fSwKLQl7ezgsIDB9LCA0fSwKLQl7ezgsIDB9LCA0fSwKLQl7ezAsIDB9LCAwfSwKLQl7ezAsIDB9LCA0fSwKLQl7ezAsIDB9LCA0fSwKLQl7ezAsIDB9LCA0fSwKLQl7ezAsIDB9LCAwfSwKLQl7ezAsIDB9LCAwfSwKLQl7ezAsIDh9LCAwfSwKLQl7ezgsIDh9LCAwfSwKLX07Ci0jZW5kaWYKLQogLyoKICAqIDg1eHggYW5kIDg2eHggc2hhcmUgbmFtaW5nIGNvbnZlbnRpb25zLCBidXQgZGlmZmVyZW50IGxheW91dC4KICAqIENvcnJlbGF0ZSBuYW1lcyB0byBDUFUtc3BlY2lmaWMgdmFsdWVzIHRvIHNoYXJlIGNvbW1vbgpAQCAtMTczLDIyICs2OCwyMiBAQAogCiB2b2lkIHBjaV9pbml0X2JvYXJkKHZvaWQpCiB7Ci0Jc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlOwotCXZvbGF0aWxlIGNjc3JfZnNsX3BjaV90ICpwY2k7Ci0JaW50IHdpZHRoOwotCWludCBob3N0OworCXN0cnVjdCBmc2xfcGNpX2luZm8gcGNpX2luZm9bM107CisJaW50IGZpcnN0X2ZyZWVfYnVzbm8gPSAwOworCWludCBudW0gPSAwOworCWludCBwY2llX2VwOworCV9fbWF5YmVfdW51c2VkIGludCBwY2llX2NvbmZpZ3VyZWQ7CisKICNpZiBkZWZpbmVkKENPTkZJR19NUEM4NXh4KQogCXZvbGF0aWxlIGNjc3JfZ3VyX3QgKmd1ciA9ICh2b2lkICopKENPTkZJR19TWVNfTVBDODV4eF9HVVRTX0FERFIpOwogI2VsaWYgZGVmaW5lZChDT05GSUdfTVBDODZ4eCkKIAlpbW1hcF90ICppbW1hcCA9IChpbW1hcF90ICopQ09ORklHX1NZU19JTU1SOwogCXZvbGF0aWxlIGNjc3JfZ3VyX3QgKmd1ciA9ICZpbW1hcC0+aW1fZ3VyOwogI2VuZGlmCi0JdWludCBkZXZkaXNyID0gaW5fYmUzMigmZ3VyLT5kZXZkaXNyKTsKLQl1aW50IGlvX3NlbCA9IChpbl9iZTMyKCZndXItPnBvcmRldnNyKSAmIE1QQzh4eHhfUE9SREVWU1JfSU9fU0VMKSA+PgorCXUzMiBkZXZkaXNyID0gaW5fYmUzMigmZ3VyLT5kZXZkaXNyKTsKKwl1MzIgcG9yZGV2c3IgPSBpbl9iZTMyKCZndXItPnBvcmRldnNyKTsKKwlfX21heWJlX3VudXNlZCB1aW50IGlvX3NlbCA9IChwb3JkZXZzciAmIE1QQzh4eHhfUE9SREVWU1JfSU9fU0VMKSA+PgogCQkJTVBDOHh4eF9QT1JERVZTUl9JT19TRUxfU0hJRlQ7Ci0JdWludCBob3N0X2FnZW50ID0gKGluX2JlMzIoJmd1ci0+cG9yYm1zcikgJiBNUEM4eHh4X1BPUkJNU1JfSEEpID4+Ci0JCQlNUEM4eHh4X1BPUkJNU1JfSEFfU0hJRlQ7Ci0Jc3RydWN0IHBjaV9yZWdpb24gKnI7CiAKICNpZmRlZiBDT05GSUdfUENJMQogCXVpbnQgcGNpX3NwZF9ub3JtID0gaW5fYmUzMigmZ3VyLT5wb3JkZXZzcikgJiBNUEM4NXh4X1BPUkRFVlNSX1BDSTFfU1BEOwpAQCAtMTk3LDQ5ICs5MiwxOSBAQAogCXVpbnQgcGNpeCA9IGluX2JlMzIoJmd1ci0+cG9yZGV2c3IpICYgTVBDODV4eF9QT1JERVZTUl9QQ0kxOwogCXVpbnQgZnJlcSA9IENPTkZJR19TWVNfQ0xLX0ZSRVEgLyAxMDAwIC8gMTAwMDsKIAotCXdpZHRoID0gMDsgLyogU2lsZW5jZSBjb21waWxlciB3YXJuaW5nLi4uICovCi0JaW9fc2VsICY9IDB4ZjsgLyogU2lsZW5jZSBjb21waWxlciB3YXJuaW5nLi4uICovCi0JcGNpID0gKGNjc3JfZnNsX3BjaV90ICopIENPTkZJR19TWVNfUENJMV9BRERSOwotCWhvc2UgPSAmcGNpMV9ob3NlOwotCWhvc3QgPSBob3N0X2FnZW50X2NmZ1tob3N0X2FnZW50XS5wY2lfaG9zdFswXTsKLQlyID0gaG9zZS0+cmVnaW9uczsKLQogCWlmICghKGRldmRpc3IgJiBNUEM4NXh4X0RFVkRJU1JfUENJMSkpIHsKKwkJU0VUX1NURF9QQ0lfSU5GTyhwY2lfaW5mb1tudW1dLCAxKTsKKwkJcGNpZV9lcCA9IGZzbF9zZXR1cF9ob3NlKCZwY2kxX2hvc2UsIHBjaV9pbmZvW251bV0ucmVncyk7CiAJCXByaW50ZigiXG4gICAgUENJMTogJWQgYml0ICVzLCAlcyAlZCBNSHosICVzLCAlc1xuIiwKIAkJCXBjaV8zMiA/IDMyIDogNjQsCiAJCQlwY2l4ID8gIlBDSVgiIDogIlBDSSIsCiAJCQlwY2lfc3BkX25vcm0gPyAiPj0iIDogIjw9IiwKIAkJCXBjaXggPyBmcmVxICogMiA6IGZyZXEsCi0JCQlob3N0ID8gImhvc3QiIDogImFnZW50IiwKKwkJCXBjaWVfZXAgPyAiYWdlbnQiIDogImhvc3QiLAogCQkJcGNpX2FyYiA/ICJhcmJpdGVyIiA6ICJleHRlcm5hbC1hcmJpdGVyIik7CiAKLQkJLyogb3V0Ym91bmQgbWVtb3J5ICovCi0JCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCQlDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UsCi0JCQkJQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTLAotCQkJCUNPTkZJR19TWVNfUENJMV9NRU1fU0laRSwKLQkJCQlQQ0lfUkVHSU9OX01FTSk7Ci0KLQkJLyogb3V0Ym91bmQgaW8gKi8KLQkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJCUNPTkZJR19TWVNfUENJMV9JT19CQVNFLAotCQkJCUNPTkZJR19TWVNfUENJMV9JT19QSFlTLAotCQkJCUNPTkZJR19TWVNfUENJMV9JT19TSVpFLAotCQkJCVBDSV9SRUdJT05fSU8pOwotCi0JCWhvc2UtPnJlZ2lvbl9jb3VudCA9IHIgLSBob3NlLT5yZWdpb25zOwotCi0JCWhvc2UtPmZpcnN0X2J1c25vID0gZmlyc3RfZnJlZV9idXNubzsKLQotCQlmc2xfcGNpX2luaXQoaG9zZSwgKHUzMikmcGNpLT5jZmdfYWRkciwgKHUzMikmcGNpLT5jZmdfZGF0YSk7Ci0KLQkJLyogVW5sb2NrIGluYm91bmQgUENJIGNvbmZpZ3VyYXRpb24gY3ljbGVzICovCi0JCWlmICghaG9zdCkKLQkJCWZzbF9wY2lfY29uZmlnX3VubG9jayhob3NlKTsKLQotCQlmaXJzdF9mcmVlX2J1c25vID0gaG9zZS0+bGFzdF9idXNubyArIDE7Ci0JCXByaW50ZigiICAgIFBDSTEgb24gYnVzICUwMnggLSAlMDJ4XG4iLAotCQkJaG9zZS0+Zmlyc3RfYnVzbm8sIGhvc2UtPmxhc3RfYnVzbm8pOworCQlmaXJzdF9mcmVlX2J1c25vID0gZnNsX3BjaV9pbml0X3BvcnQoJnBjaV9pbmZvW251bSsrXSwKKwkJCQkJJnBjaTFfaG9zZSwgZmlyc3RfZnJlZV9idXNubyk7CiAJfSBlbHNlIHsKIAkJcHJpbnRmKCIgICAgUENJMTogZGlzYWJsZWRcbiIpOwogCX0KQEAgLTI0NywxNDggKzExMiw1MyBAQAogCS8qIFBDSTEgbm90IHByZXNlbnQgb24gTVBDODU3MiAqLwogCXNldGJpdHNfYmUzMigmZ3VyLT5kZXZkaXNyLCBNUEM4NXh4X0RFVkRJU1JfUENJMSk7CiAjZW5kaWYKKwogI2lmZGVmIENPTkZJR19QQ0lFMQotCXBjaSA9IChjY3NyX2ZzbF9wY2lfdCAqKSBDT05GSUdfU1lTX1BDSUUxX0FERFI7Ci0JaG9zZSA9ICZwY2llMV9ob3NlOwotCWhvc3QgPSBob3N0X2FnZW50X2NmZ1tob3N0X2FnZW50XS5wY2llX3Jvb3RbMF07Ci0Jd2lkdGggPSBpb19wb3J0X2NmZ1tpb19zZWxdLnBjaWVfd2lkdGhbMF07Ci0JciA9IGhvc2UtPnJlZ2lvbnM7CisJcGNpZV9jb25maWd1cmVkID0gaXNfZnNsX3BjaV9jZmcoTEFXX1RSR1RfSUZfUENJRV8xLCBpb19zZWwpOwogCi0JaWYgKHdpZHRoICYmICEoZGV2ZGlzciAmIE1QQzh4eHhfREVWRElTUl9QQ0lFMSkpIHsKLQkJcHJpbnRmKCJcbiAgICBQQ0lFMSBjb25uZWN0ZWQgYXMgJXMgKHglZCkiLAotCQkJaG9zdCA/ICJSb290IENvbXBsZXgiIDogIkVuZHBvaW50Iiwgd2lkdGgpOwotCQlpZiAoaW5fYmUzMigmcGNpLT5wbWVfbXNnX2RldCkpIHsKLQkJCW91dF9iZTMyKCZwY2ktPnBtZV9tc2dfZGV0LCAweGZmZmZmZmZmKTsKLQkJCWRlYnVnKCIgd2l0aCBlcnJvcnMuICBDbGVhcmluZy4gIE5vdyAweCUwOHgiLAotCQkJCWluX2JlMzIoJnBjaS0+cG1lX21zZ19kZXQpKTsKLQkJfQotCQlwcmludGYoIlxuIik7Ci0KLQkJLyogb3V0Ym91bmQgbWVtb3J5ICovCi0JCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCQlDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFLAotCQkJCUNPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMsCi0JCQkJQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRSwKLQkJCQlQQ0lfUkVHSU9OX01FTSk7Ci0KLQkJLyogb3V0Ym91bmQgaW8gKi8KLQkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJCUNPTkZJR19TWVNfUENJRTFfSU9fQkFTRSwKLQkJCQlDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMsCi0JCQkJQ09ORklHX1NZU19QQ0lFMV9JT19TSVpFLAotCQkJCVBDSV9SRUdJT05fSU8pOwotCi0JCWhvc2UtPnJlZ2lvbl9jb3VudCA9IHIgLSBob3NlLT5yZWdpb25zOwotCi0JCWhvc2UtPmZpcnN0X2J1c25vID0gZmlyc3RfZnJlZV9idXNubzsKLQotCQlmc2xfcGNpX2luaXQoaG9zZSwgKHUzMikmcGNpLT5jZmdfYWRkciwgKHUzMikmcGNpLT5jZmdfZGF0YSk7Ci0KLQkJLyogVW5sb2NrIGluYm91bmQgUENJIGNvbmZpZ3VyYXRpb24gY3ljbGVzICovCi0JCWlmICghaG9zdCkKLQkJCWZzbF9wY2lfY29uZmlnX3VubG9jayhob3NlKTsKLQotCQlmaXJzdF9mcmVlX2J1c25vID0gaG9zZS0+bGFzdF9idXNubyArIDE7Ci0JCXByaW50ZigiICAgIFBDSUUxIG9uIGJ1cyAlMDJ4IC0gJTAyeFxuIiwKLQkJCQlob3NlLT5maXJzdF9idXNubywgaG9zZS0+bGFzdF9idXNubyk7CisJaWYgKHBjaWVfY29uZmlndXJlZCAmJiAhKGRldmRpc3IgJiBNUEM4eHh4X0RFVkRJU1JfUENJRTEpKSB7CisJCVNFVF9TVERfUENJRV9JTkZPKHBjaV9pbmZvW251bV0sIDEpOworCQlwY2llX2VwID0gZnNsX3NldHVwX2hvc2UoJnBjaWUxX2hvc2UsIHBjaV9pbmZvW251bV0ucmVncyk7CisJCXByaW50ZigiICAgIFBDSUUxIGNvbm5lY3RlZCBhcyAlc1xuIiwKKwkJCXBjaWVfZXAgPyAiRW5kcG9pbnQiIDogIlJvb3QgQ29tcGxleCIpOworCQlmaXJzdF9mcmVlX2J1c25vID0gZnNsX3BjaV9pbml0X3BvcnQoJnBjaV9pbmZvW251bSsrXSwKKwkJCQkJJnBjaWUxX2hvc2UsIGZpcnN0X2ZyZWVfYnVzbm8pOworCX0gZWxzZSB7CisJCXByaW50ZigiICAgIFBDSUUxOiBkaXNhYmxlZFxuIik7CiAJfQogI2Vsc2UKIAlzZXRiaXRzX2JlMzIoJmd1ci0+ZGV2ZGlzciwgTVBDOHh4eF9ERVZESVNSX1BDSUUxKTsKICNlbmRpZiAvKiBDT05GSUdfUENJRTEgKi8KIAogI2lmZGVmIENPTkZJR19QQ0lFMgotCXBjaSA9IChjY3NyX2ZzbF9wY2lfdCAqKSBDT05GSUdfU1lTX1BDSUUyX0FERFI7Ci0JaG9zZSA9ICZwY2llMl9ob3NlOwotCWhvc3QgPSBob3N0X2FnZW50X2NmZ1tob3N0X2FnZW50XS5wY2llX3Jvb3RbMV07Ci0Jd2lkdGggPSBpb19wb3J0X2NmZ1tpb19zZWxdLnBjaWVfd2lkdGhbMV07Ci0JciA9IGhvc2UtPnJlZ2lvbnM7CisJcGNpZV9jb25maWd1cmVkID0gaXNfZnNsX3BjaV9jZmcoTEFXX1RSR1RfSUZfUENJRV8yLCBpb19zZWwpOwogCi0JaWYgKHdpZHRoICYmICEoZGV2ZGlzciAmIE1QQzh4eHhfREVWRElTUl9QQ0lFMikpIHsKLQkJcHJpbnRmKCJcbiAgICBQQ0lFMiBjb25uZWN0ZWQgYXMgJXMgKHglZCkiLAotCQkJaG9zdCA/ICJSb290IENvbXBsZXgiIDogIkVuZHBvaW50Iiwgd2lkdGgpOwotCQlpZiAoaW5fYmUzMigmcGNpLT5wbWVfbXNnX2RldCkpIHsKLQkJCW91dF9iZTMyKCZwY2ktPnBtZV9tc2dfZGV0LCAweGZmZmZmZmZmKTsKLQkJCWRlYnVnKCIgd2l0aCBlcnJvcnMuICBDbGVhcmluZy4gIE5vdyAweCUwOHgiLAotCQkJCWluX2JlMzIoJnBjaS0+cG1lX21zZ19kZXQpKTsKLQkJfQotCQlwcmludGYoIlxuIik7Ci0KLQkJLyogb3V0Ym91bmQgbWVtb3J5ICovCi0JCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCQlDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFLAotCQkJCUNPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMsCi0JCQkJQ09ORklHX1NZU19QQ0lFMl9NRU1fU0laRSwKLQkJCQlQQ0lfUkVHSU9OX01FTSk7Ci0KLQkJLyogb3V0Ym91bmQgaW8gKi8KLQkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJCUNPTkZJR19TWVNfUENJRTJfSU9fQkFTRSwKLQkJCQlDT05GSUdfU1lTX1BDSUUyX0lPX1BIWVMsCi0JCQkJQ09ORklHX1NZU19QQ0lFMl9JT19TSVpFLAotCQkJCVBDSV9SRUdJT05fSU8pOwotCi0JCWhvc2UtPnJlZ2lvbl9jb3VudCA9IHIgLSBob3NlLT5yZWdpb25zOwotCi0JCWhvc2UtPmZpcnN0X2J1c25vID0gZmlyc3RfZnJlZV9idXNubzsKLQotCQlmc2xfcGNpX2luaXQoaG9zZSwgKHUzMikmcGNpLT5jZmdfYWRkciwgKHUzMikmcGNpLT5jZmdfZGF0YSk7Ci0KLQkJLyogVW5sb2NrIGluYm91bmQgUENJIGNvbmZpZ3VyYXRpb24gY3ljbGVzICovCi0JCWlmICghaG9zdCkKLQkJCWZzbF9wY2lfY29uZmlnX3VubG9jayhob3NlKTsKLQotCQlmaXJzdF9mcmVlX2J1c25vID0gaG9zZS0+bGFzdF9idXNubyArIDE7Ci0JCXByaW50ZigiICAgIFBDSUUyIG9uIGJ1cyAlMDJ4IC0gJTAyeFxuIiwKLQkJCQlob3NlLT5maXJzdF9idXNubywgaG9zZS0+bGFzdF9idXNubyk7CisJaWYgKHBjaWVfY29uZmlndXJlZCAmJiAhKGRldmRpc3IgJiBNUEM4eHh4X0RFVkRJU1JfUENJRTIpKSB7CisJCVNFVF9TVERfUENJRV9JTkZPKHBjaV9pbmZvW251bV0sIDIpOworCQlwY2llX2VwID0gZnNsX3NldHVwX2hvc2UoJnBjaWUyX2hvc2UsIHBjaV9pbmZvW251bV0ucmVncyk7CisJCXByaW50ZigiICAgIFBDSUUyIGNvbm5lY3RlZCBhcyAlc1xuIiwKKwkJCXBjaWVfZXAgPyAiRW5kcG9pbnQiIDogIlJvb3QgQ29tcGxleCIpOworCQlmaXJzdF9mcmVlX2J1c25vID0gZnNsX3BjaV9pbml0X3BvcnQoJnBjaV9pbmZvW251bSsrXSwKKwkJCQkJJnBjaWUyX2hvc2UsIGZpcnN0X2ZyZWVfYnVzbm8pOworCX0gZWxzZSB7CisJCXByaW50ZigiICAgIFBDSUUyOiBkaXNhYmxlZFxuIik7CiAJfQogI2Vsc2UKIAlzZXRiaXRzX2JlMzIoJmd1ci0+ZGV2ZGlzciwgTVBDOHh4eF9ERVZESVNSX1BDSUUyKTsKICNlbmRpZiAvKiBDT05GSUdfUENJRTIgKi8KIAogI2lmZGVmIENPTkZJR19QQ0lFMwotCXBjaSA9IChjY3NyX2ZzbF9wY2lfdCAqKSBDT05GSUdfU1lTX1BDSUUzX0FERFI7Ci0JaG9zZSA9ICZwY2llM19ob3NlOwotCWhvc3QgPSBob3N0X2FnZW50X2NmZ1tob3N0X2FnZW50XS5wY2llX3Jvb3RbMl07Ci0Jd2lkdGggPSBpb19wb3J0X2NmZ1tpb19zZWxdLnBjaWVfd2lkdGhbMl07Ci0JciA9IGhvc2UtPnJlZ2lvbnM7CisJcGNpZV9jb25maWd1cmVkID0gaXNfZnNsX3BjaV9jZmcoTEFXX1RSR1RfSUZfUENJRV8zLCBpb19zZWwpOwogCi0JaWYgKHdpZHRoICYmICEoZGV2ZGlzciAmIE1QQzh4eHhfREVWRElTUl9QQ0lFMykpIHsKLQkJcHJpbnRmKCJcbiAgICBQQ0lFMyBjb25uZWN0ZWQgYXMgJXMgKHglZCkiLAotCQkJaG9zdCA/ICJSb290IENvbXBsZXgiIDogIkVuZHBvaW50Iiwgd2lkdGgpOwotCQlpZiAoaW5fYmUzMigmcGNpLT5wbWVfbXNnX2RldCkpIHsKLQkJCW91dF9iZTMyKCZwY2ktPnBtZV9tc2dfZGV0LCAweGZmZmZmZmZmKTsKLQkJCWRlYnVnKCIgd2l0aCBlcnJvcnMuICBDbGVhcmluZy4gIE5vdyAweCUwOHgiLAotCQkJCWluX2JlMzIoJnBjaS0+cG1lX21zZ19kZXQpKTsKLQkJfQotCQlwcmludGYoIlxuIik7Ci0KLQkJLyogb3V0Ym91bmQgbWVtb3J5ICovCi0JCXBjaV9zZXRfcmVnaW9uKHIrKywKLQkJCQlDT05GSUdfU1lTX1BDSUUzX01FTV9CQVNFLAotCQkJCUNPTkZJR19TWVNfUENJRTNfTUVNX1BIWVMsCi0JCQkJQ09ORklHX1NZU19QQ0lFM19NRU1fU0laRSwKLQkJCQlQQ0lfUkVHSU9OX01FTSk7Ci0KLQkJLyogb3V0Ym91bmQgaW8gKi8KLQkJcGNpX3NldF9yZWdpb24ocisrLAotCQkJCUNPTkZJR19TWVNfUENJRTNfSU9fQkFTRSwKLQkJCQlDT05GSUdfU1lTX1BDSUUzX0lPX1BIWVMsCi0JCQkJQ09ORklHX1NZU19QQ0lFM19JT19TSVpFLAotCQkJCVBDSV9SRUdJT05fSU8pOwotCi0JCWhvc2UtPnJlZ2lvbl9jb3VudCA9IHIgLSBob3NlLT5yZWdpb25zOwotCi0JCWhvc2UtPmZpcnN0X2J1c25vID0gZmlyc3RfZnJlZV9idXNubzsKLQotCQlmc2xfcGNpX2luaXQoaG9zZSwgKHUzMikmcGNpLT5jZmdfYWRkciwgKHUzMikmcGNpLT5jZmdfZGF0YSk7Ci0KLQkJLyogVW5sb2NrIGluYm91bmQgUENJIGNvbmZpZ3VyYXRpb24gY3ljbGVzICovCi0JCWlmICghaG9zdCkKLQkJCWZzbF9wY2lfY29uZmlnX3VubG9jayhob3NlKTsKLQotCQlmaXJzdF9mcmVlX2J1c25vID0gaG9zZS0+bGFzdF9idXNubyArIDE7Ci0JCXByaW50ZigiICAgIFBDSUUzIG9uIGJ1cyAlMDJ4IC0gJTAyeFxuIiwKLQkJCQlob3NlLT5maXJzdF9idXNubywgaG9zZS0+bGFzdF9idXNubyk7CisJaWYgKHBjaWVfY29uZmlndXJlZCAmJiAhKGRldmRpc3IgJiBNUEM4eHh4X0RFVkRJU1JfUENJRTMpKSB7CisJCVNFVF9TVERfUENJRV9JTkZPKHBjaV9pbmZvW251bV0sIDMpOworCQlwY2llX2VwID0gZnNsX3NldHVwX2hvc2UoJnBjaWUzX2hvc2UsIHBjaV9pbmZvW251bV0ucmVncyk7CisJCXByaW50ZigiICAgIFBDSUUzIGNvbm5lY3RlZCBhcyAlc1xuIiwKKwkJCXBjaWVfZXAgPyAiRW5kcG9pbnQiIDogIlJvb3QgQ29tcGxleCIpOworCQlmaXJzdF9mcmVlX2J1c25vID0gZnNsX3BjaV9pbml0X3BvcnQoJnBjaV9pbmZvW251bSsrXSwKKwkJCQkJJnBjaWUzX2hvc2UsIGZpcnN0X2ZyZWVfYnVzbm8pOworCX0gZWxzZSB7CisJCXByaW50ZigiICAgIFBDSUUzOiBkaXNhYmxlZFxuIik7CiAJfQogI2Vsc2UKIAlzZXRiaXRzX2JlMzIoJmd1ci0+ZGV2ZGlzciwgTVBDOHh4eF9ERVZESVNSX1BDSUUzKTsKZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy94cGVkaXRlNTE3MC91LWJvb3QubGRzIGIvYm9hcmQveGVzL3hwZWRpdGU1MTcwL3UtYm9vdC5sZHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjZWEzYjMuLjAwMDAwMDAKLS0tIGEvYm9hcmQveGVzL3hwZWRpdGU1MTcwL3UtYm9vdC5sZHMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDA2LCAyMDA3IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotT1VUUFVUX0FSQ0gocG93ZXJwYykKLQotU0VDVElPTlMKLXsKLQotICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KLSAgLmludGVycCA6IHsgKiguaW50ZXJwKSB9Ci0gIC5oYXNoICAgICAgICAgIDogeyAqKC5oYXNoKQkJfQotICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQotICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQotICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KLSAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQotICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KLSAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQotICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9Ci0gIC5yZWxhLmN0b3JzICAgIDogeyAqKC5yZWxhLmN0b3JzKQl9Ci0gIC5yZWwuZHRvcnMgICAgIDogeyAqKC5yZWwuZHRvcnMpCX0KLSAgLnJlbGEuZHRvcnMgICAgOiB7ICooLnJlbGEuZHRvcnMpCX0KLSAgLnJlbC5ic3MgICAgICAgOiB7ICooLnJlbC5ic3MpCQl9Ci0gIC5yZWxhLmJzcyAgICAgIDogeyAqKC5yZWxhLmJzcykJCX0KLSAgLnJlbC5wbHQgICAgICAgOiB7ICooLnJlbC5wbHQpCQl9Ci0gIC5yZWxhLnBsdCAgICAgIDogeyAqKC5yZWxhLnBsdCkJCX0KLSAgLmluaXQgICAgICAgICAgOiB7ICooLmluaXQpCX0KLSAgLnBsdCA6IHsgKigucGx0KSB9Ci0gIC50ZXh0ICAgICAgOgotICB7Ci0gICAgYXJjaC9wb3dlcnBjL2NwdS9tcGM4Nnh4L3N0YXJ0Lm8JKC50ZXh0KQotICAgIGFyY2gvcG93ZXJwYy9jcHUvbXBjODZ4eC90cmFwcy5vICgudGV4dCkKLSAgICBhcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvaW50ZXJydXB0cy5vICgudGV4dCkKLSAgICBhcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvY3B1X2luaXQubyAoLnRleHQpCi0gICAgYXJjaC9wb3dlcnBjL2NwdS9tcGM4Nnh4L2NwdS5vICgudGV4dCkKLSAgICBhcmNoL3Bvd2VycGMvY3B1L21wYzg2eHgvc3BlZWQubyAoLnRleHQpCi0gICAgY29tbW9uL2RsbWFsbG9jLm8gKC50ZXh0KQotICAgIGxpYi9jcmMzMi5vICgudGV4dCkKLSAgICBhcmNoL3Bvd2VycGMvbGliL2V4dGFibGUubyAoLnRleHQpCi0gICAgbGliL3psaWIubyAoLnRleHQpCi0gICAgKigudGV4dCkKLSAgICAqKC5nb3QxKQotICAgfQotICAgIF9ldGV4dCA9IC47Ci0gICAgUFJPVklERSAoZXRleHQgPSAuKTsKLSAgICAucm9kYXRhICAgIDoKLSAgIHsKLSAgICAqKC5laF9mcmFtZSkKLSAgICAqKFNPUlRfQllfQUxJR05NRU5UKFNPUlRfQllfTkFNRSgucm9kYXRhKikpKQotICB9Ci0gIC5maW5pICAgICAgOiB7ICooLmZpbmkpICAgIH0gPTAKLSAgLmN0b3JzICAgICA6IHsgKiguY3RvcnMpICAgfQotICAuZHRvcnMgICAgIDogeyAqKC5kdG9ycykgICB9Ci0KLSAgLyogUmVhZC13cml0ZSBzZWN0aW9uLCBtZXJnZWQgaW50byBkYXRhIHNlZ21lbnQ6ICovCi0gIC4gPSAoLiArIDB4MDBGRikgJiAweEZGRkZGRjAwOwotICBfZXJvdGV4dCA9IC47Ci0gIFBST1ZJREUgKGVyb3RleHQgPSAuKTsKLSAgLnJlbG9jICAgOgotICB7Ci0gICAgKiguZ290KQotICAgIF9HT1QyX1RBQkxFXyA9IC47Ci0gICAgKiguZ290MikKLSAgICBfRklYVVBfVEFCTEVfID0gLjsKLSAgICAqKC5maXh1cCkKLSAgfQotICBfX2dvdDJfZW50cmllcyA9IChfRklYVVBfVEFCTEVfIC0gX0dPVDJfVEFCTEVfKSA+PiAyOwotICBfX2ZpeHVwX2VudHJpZXMgPSAoLiAtIF9GSVhVUF9UQUJMRV8pID4+IDI7Ci0KLSAgLmRhdGEgICAgOgotICB7Ci0gICAgKiguZGF0YSkKLSAgICAqKC5kYXRhMSkKLSAgICAqKC5zZGF0YSkKLSAgICAqKC5zZGF0YTIpCi0gICAgKiguZHluYW1pYykKLSAgICBDT05TVFJVQ1RPUlMKLSAgfQotICBfZWRhdGEgID0gIC47Ci0gIFBST1ZJREUgKGVkYXRhID0gLik7Ci0KLSAgLiA9IC47Ci0gIF9fdV9ib290X2NtZF9zdGFydCA9IC47Ci0gIC51X2Jvb3RfY21kIDogeyAqKC51X2Jvb3RfY21kKSB9Ci0gIF9fdV9ib290X2NtZF9lbmQgPSAuOwotCi0gIC4gPSAuOwotICBfX3N0YXJ0X19fZXhfdGFibGUgPSAuOwotICBfX2V4X3RhYmxlIDogeyAqKF9fZXhfdGFibGUpIH0KLSAgX19zdG9wX19fZXhfdGFibGUgPSAuOwotCi0gIC4gPSBBTElHTigyNTYpOwotICBfX2luaXRfYmVnaW4gPSAuOwotICAudGV4dC5pbml0IDogeyAqKC50ZXh0LmluaXQpIH0KLSAgLmRhdGEuaW5pdCA6IHsgKiguZGF0YS5pbml0KSB9Ci0gIC4gPSBBTElHTigyNTYpOwotICBfX2luaXRfZW5kID0gLjsKLQotICBfX2Jzc19zdGFydCA9IC47Ci0gIC5ic3MgKE5PTE9BRCkgICAgICAgOgotICB7Ci0gICAqKC5zYnNzKSAqKC5zY29tbW9uKQotICAgKiguZHluYnNzKQotICAgKiguYnNzKQotICAgKihDT01NT04pCi0gICAuID0gQUxJR04oNCk7Ci0gIH0KLSAgX2VuZCA9IC4gOwotICBQUk9WSURFIChlbmQgPSAuKTsKLX0KZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy94cGVkaXRlNTE3MC9NYWtlZmlsZSBiL2JvYXJkL3hlcy94cGVkaXRlNTE3eC9NYWtlZmlsZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYm9hcmQveGVzL3hwZWRpdGU1MTcwL01ha2VmaWxlCnJlbmFtZSB0byBib2FyZC94ZXMveHBlZGl0ZTUxN3gvTWFrZWZpbGUKZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy94cGVkaXRlNTE3MC9kZHIuYyBiL2JvYXJkL3hlcy94cGVkaXRlNTE3eC9kZHIuYwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYm9hcmQveGVzL3hwZWRpdGU1MTcwL2Rkci5jCnJlbmFtZSB0byBib2FyZC94ZXMveHBlZGl0ZTUxN3gvZGRyLmMKZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy94cGVkaXRlNTE3MC9sYXcuYyBiL2JvYXJkL3hlcy94cGVkaXRlNTE3eC9sYXcuYwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYm9hcmQveGVzL3hwZWRpdGU1MTcwL2xhdy5jCnJlbmFtZSB0byBib2FyZC94ZXMveHBlZGl0ZTUxN3gvbGF3LmMKZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy94cGVkaXRlNTE3MC94cGVkaXRlNTE3MC5jIGIvYm9hcmQveGVzL3hwZWRpdGU1MTd4L3hwZWRpdGU1MTd4LmMKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1lIGZyb20gYm9hcmQveGVzL3hwZWRpdGU1MTcwL3hwZWRpdGU1MTcwLmMKcmVuYW1lIHRvIGJvYXJkL3hlcy94cGVkaXRlNTE3eC94cGVkaXRlNTE3eC5jCmluZGV4IDU4MjI5NDEuLjBmN2ZhNmMgMTAwNjQ0Ci0tLSBhL2JvYXJkL3hlcy94cGVkaXRlNTE3MC94cGVkaXRlNTE3MC5jCisrKyBiL2JvYXJkL3hlcy94cGVkaXRlNTE3eC94cGVkaXRlNTE3eC5jCkBAIC0yNiwzMCArMjYsMTIgQEAKICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxmZHRfc3VwcG9ydC5oPgogI2luY2x1ZGUgPHBjYTk1M3guaD4KKyNpbmNsdWRlICIuLi9jb21tb24vZnNsXzh4eHhfbWlzYy5oIgogCiAjaWYgZGVmaW5lZChDT05GSUdfT0ZfQk9BUkRfU0VUVVApICYmIGRlZmluZWQoQ09ORklHX1BDSSkKIGV4dGVybiB2b2lkIGZ0X2JvYXJkX3BjaV9zZXR1cCh2b2lkICpibG9iLCBiZF90ICpiZCk7CiAjZW5kaWYKIAotaW50IGNoZWNrYm9hcmQodm9pZCkKLXsKLQljaGFyICpzOwotCi0JcHJpbnRmKCJCb2FyZDogWC1FUyAlcyAzVSBWUFggU0JDXG4iLCBDT05GSUdfU1lTX0JPQVJEX05BTUUpOwotCXByaW50ZigiICAgICAgICIpOwotCXMgPSBnZXRlbnYoImJvYXJkX3JldiIpOwotCWlmIChzKQotCQlwcmludGYoIlJldiAlcywgIiwgcyk7Ci0JcyA9IGdldGVudigic2VyaWFsIyIpOwotCWlmIChzKQotCQlwcmludGYoIlNlcmlhbCMgJXMsICIsIHMpOwotCXMgPSBnZXRlbnYoImJvYXJkX2NmZyIpOwotCWlmIChzKQotCQlwcmludGYoIkNmZyAlcyIsIHMpOwotCXByaW50ZigiXG4iKTsKLQotCXJldHVybiAwOwotfQogLyoKICAqIFByaW50IG91dCB3aGljaCBmbGFzaCB3YXMgYm9vdGVkIGZyb20gYW5kIGlmIGJvb3RpbmcgZnJvbSB0aGUgMm5kIGZsYXNoLAogICogc3dhcCBmbGFzaCBjaGlwIHNlbGVjdHMgdG8gbWFpbnRhaW4gY29uc2lzdGVudCBmbGFzaCBudW1iZXJpbmcvYWRkcmVzc2VzLgpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1MjAwL01ha2VmaWxlIGIvYm9hcmQveGVzL3hwZWRpdGU1MjB4L01ha2VmaWxlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBib2FyZC94ZXMveHBlZGl0ZTUyMDAvTWFrZWZpbGUKcmVuYW1lIHRvIGJvYXJkL3hlcy94cGVkaXRlNTIweC9NYWtlZmlsZQpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1MjAwL2Rkci5jIGIvYm9hcmQveGVzL3hwZWRpdGU1MjB4L2Rkci5jCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBib2FyZC94ZXMveHBlZGl0ZTUyMDAvZGRyLmMKcmVuYW1lIHRvIGJvYXJkL3hlcy94cGVkaXRlNTIweC9kZHIuYwpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1MjAwL2xhdy5jIGIvYm9hcmQveGVzL3hwZWRpdGU1MjB4L2xhdy5jCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBib2FyZC94ZXMveHBlZGl0ZTUyMDAvbGF3LmMKcmVuYW1lIHRvIGJvYXJkL3hlcy94cGVkaXRlNTIweC9sYXcuYwpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1MjAwL3RsYi5jIGIvYm9hcmQveGVzL3hwZWRpdGU1MjB4L3RsYi5jCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBib2FyZC94ZXMveHBlZGl0ZTUyMDAvdGxiLmMKcmVuYW1lIHRvIGJvYXJkL3hlcy94cGVkaXRlNTIweC90bGIuYwpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1MjAwL3hwZWRpdGU1MjAwLmMgYi9ib2FyZC94ZXMveHBlZGl0ZTUyMHgveHBlZGl0ZTUyMHguYwpzaW1pbGFyaXR5IGluZGV4IDc5JQpyZW5hbWUgZnJvbSBib2FyZC94ZXMveHBlZGl0ZTUyMDAveHBlZGl0ZTUyMDAuYwpyZW5hbWUgdG8gYm9hcmQveGVzL3hwZWRpdGU1MjB4L3hwZWRpdGU1MjB4LmMKaW5kZXggYTI2MjdmOC4uZGM1Yzk2NSAxMDA2NDQKLS0tIGEvYm9hcmQveGVzL3hwZWRpdGU1MjAwL3hwZWRpdGU1MjAwLmMKKysrIGIvYm9hcmQveGVzL3hwZWRpdGU1MjB4L3hwZWRpdGU1MjB4LmMKQEAgLTM2LDMzICszNiw2IEBACiAKIGV4dGVybiB2b2lkIGZ0X2JvYXJkX3BjaV9zZXR1cCh2b2lkICpibG9iLCBiZF90ICpiZCk7CiAKLWludCBjaGVja2JvYXJkKHZvaWQpCi17Ci0Jdm9sYXRpbGUgZnNsX2xiY190ICpsYmMgPSBMQkNfQkFTRV9BRERSOwotCXZvbGF0aWxlIGNjc3JfbG9jYWxfZWNtX3QgKmVjbSA9ICh2b2lkICopKENPTkZJR19TWVNfTVBDODV4eF9FQ01fQUREUik7Ci0JY2hhciAqczsKLQotCXByaW50ZigiQm9hcmQ6IFgtRVMgJXMgUE1DXG4iLCBDT05GSUdfU1lTX0JPQVJEX05BTUUpOwotCXByaW50ZigiICAgICAgICIpOwotCXMgPSBnZXRlbnYoImJvYXJkX3JldiIpOwotCWlmIChzKQotCQlwcmludGYoIlJldiAlcywgIiwgcyk7Ci0JcyA9IGdldGVudigic2VyaWFsIyIpOwotCWlmIChzKQotCQlwcmludGYoIlNlcmlhbCMgJXMsICIsIHMpOwotCXMgPSBnZXRlbnYoImJvYXJkX2NmZyIpOwotCWlmIChzKQotCQlwcmludGYoIkNmZyAlcyIsIHMpOwotCXByaW50ZigiXG4iKTsKLQotCW91dF9iZTMyKCZsYmMtPmx0ZXNyLCAweGZmZmZmZmZmKTsJLyogQ2xlYXIgTEJDIGVycm9yIElSUXMgKi8KLQlvdXRfYmUzMigmbGJjLT5sdGVpciwgMHhmZmZmZmZmZik7CS8qIEVuYWJsZSBMQkMgZXJyb3IgSVJRcyAqLwotCW91dF9iZTMyKCZlY20tPmVlZHIsIDB4ZmZmZmZmZmYpOwkvKiBDbGVhciBlY20gZXJyb3JzICovCi0Jb3V0X2JlMzIoJmVjbS0+ZWVlciwgMHhmZmZmZmZmZik7CS8qIEVuYWJsZSBlY20gZXJyb3JzICovCi0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgZmxhc2hfY3NfZml4dXAodm9pZCkKIHsKIAlpbnQgZmxhc2hfc2VsOwpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1MzcwL01ha2VmaWxlIGIvYm9hcmQveGVzL3hwZWRpdGU1Mzd4L01ha2VmaWxlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBib2FyZC94ZXMveHBlZGl0ZTUzNzAvTWFrZWZpbGUKcmVuYW1lIHRvIGJvYXJkL3hlcy94cGVkaXRlNTM3eC9NYWtlZmlsZQpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1MzcwL2Rkci5jIGIvYm9hcmQveGVzL3hwZWRpdGU1Mzd4L2Rkci5jCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBib2FyZC94ZXMveHBlZGl0ZTUzNzAvZGRyLmMKcmVuYW1lIHRvIGJvYXJkL3hlcy94cGVkaXRlNTM3eC9kZHIuYwpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1MzcwL2xhdy5jIGIvYm9hcmQveGVzL3hwZWRpdGU1Mzd4L2xhdy5jCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBib2FyZC94ZXMveHBlZGl0ZTUzNzAvbGF3LmMKcmVuYW1lIHRvIGJvYXJkL3hlcy94cGVkaXRlNTM3eC9sYXcuYwpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1MzcwL3RsYi5jIGIvYm9hcmQveGVzL3hwZWRpdGU1Mzd4L3RsYi5jCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBib2FyZC94ZXMveHBlZGl0ZTUzNzAvdGxiLmMKcmVuYW1lIHRvIGJvYXJkL3hlcy94cGVkaXRlNTM3eC90bGIuYwpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1MzcwL3hwZWRpdGU1MzcwLmMgYi9ib2FyZC94ZXMveHBlZGl0ZTUzN3gveHBlZGl0ZTUzN3guYwpzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5hbWUgZnJvbSBib2FyZC94ZXMveHBlZGl0ZTUzNzAveHBlZGl0ZTUzNzAuYwpyZW5hbWUgdG8gYm9hcmQveGVzL3hwZWRpdGU1Mzd4L3hwZWRpdGU1Mzd4LmMKaW5kZXggMmEwNjBjMi4uODlmYTZjNyAxMDA2NDQKLS0tIGEvYm9hcmQveGVzL3hwZWRpdGU1MzcwL3hwZWRpdGU1MzcwLmMKKysrIGIvYm9hcmQveGVzL3hwZWRpdGU1Mzd4L3hwZWRpdGU1Mzd4LmMKQEAgLTM2LDI2ICszNiw2IEBACiAKIGV4dGVybiB2b2lkIGZ0X2JvYXJkX3BjaV9zZXR1cCh2b2lkICpibG9iLCBiZF90ICpiZCk7CiAKLWludCBjaGVja2JvYXJkKHZvaWQpCi17Ci0JY2hhciAqczsKLQotCXByaW50ZigiQm9hcmQ6IFgtRVMgJXMgM1UgVlBYIFNCQ1xuIiwgQ09ORklHX1NZU19CT0FSRF9OQU1FKTsKLQlwcmludGYoIiAgICAgICAiKTsKLQlzID0gZ2V0ZW52KCJib2FyZF9yZXYiKTsKLQlpZiAocykKLQkJcHJpbnRmKCJSZXYgJXMsICIsIHMpOwotCXMgPSBnZXRlbnYoInNlcmlhbCMiKTsKLQlpZiAocykKLQkJcHJpbnRmKCJTZXJpYWwjICVzLCAiLCBzKTsKLQlzID0gZ2V0ZW52KCJib2FyZF9jZmciKTsKLQlpZiAocykKLQkJcHJpbnRmKCJDZmcgJXMiLCBzKTsKLQlwcmludGYoIlxuIik7Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgZmxhc2hfY3NfZml4dXAodm9pZCkKIHsKIAlpbnQgZmxhc2hfc2VsOwpkaWZmIC0tZ2l0IGEvYm9hcmQveGVzL3hwZWRpdGU1NTB4L01ha2VmaWxlIGIvYm9hcmQveGVzL3hwZWRpdGU1NTB4L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ODBhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC94ZXMveHBlZGl0ZTU1MHgvTWFrZWZpbGUKQEAgLTAsMCArMSwzOSBAQAorIworIyBDb3B5cmlnaHQgMjAwNy0yMDA4IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisKK2luY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworCitMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCisKK0NPQkpTLXkJKz0gJChCT0FSRCkubworQ09CSlMteQkrPSBkZHIubworQ09CSlMteQkrPSBsYXcubworQ09CSlMteQkrPSB0bGIubworCitTUkNTCTo9ICQoU09CSlMteToubz0uUykgJChDT0JKUy15Oi5vPS5jKQorT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUy15KSkKK1NPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTLXkpKQorCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQorCitjbGVhbjoKKwlybSAtZiAkKE9CSlMpICQoU09CSlMpCisKK2Rpc3RjbGVhbjoJY2xlYW4KKwlybSAtZiAkKExJQikgY29yZSAqLmJhayAuZGVwZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBkZWZpbmVzICQob2JqKS5kZXBlbmQgdGFyZ2V0CitpbmNsdWRlICQoU1JDVFJFRSkvcnVsZXMubWsKKworc2luY2x1ZGUgJChvYmopLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9ib2FyZC94ZXMveHBlZGl0ZTU1MHgvZGRyLmMgYi9ib2FyZC94ZXMveHBlZGl0ZTU1MHgvZGRyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4Y2Q5OAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3hlcy94cGVkaXRlNTUweC9kZHIuYwpAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEwIEV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zLCBJbmMuCisgKiBDb3B5cmlnaHQgMjAwNy0yMDA4IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGkyYy5oPgorCisjaW5jbHVkZSA8YXNtL2ZzbF9kZHJfc2RyYW0uaD4KKyNpbmNsdWRlIDxhc20vZnNsX2Rkcl9kaW1tX3BhcmFtcy5oPgorCitzdGF0aWMgdm9pZCBnZXRfc3BkKGRkcjNfc3BkX2VlcHJvbV90ICpzcGQsIHVuc2lnbmVkIGNoYXIgaTJjX2FkZHJlc3MpCit7CisJaTJjX3JlYWQoaTJjX2FkZHJlc3MsIFNQRF9FRVBST01fT0ZGU0VULCAyLCAodWNoYXIgKilzcGQsCisJCSBzaXplb2YoZGRyM19zcGRfZWVwcm9tX3QpKTsKK30KKwordm9pZCBmc2xfZGRyX2dldF9zcGQoZGRyM19zcGRfZWVwcm9tX3QgKmN0cmxfZGltbXNfc3BkLAorCQkgICAgICB1bnNpZ25lZCBpbnQgY3RybF9udW0pCit7CisJdW5zaWduZWQgaW50IGk7CisJdW5zaWduZWQgaW50IGkyY19hZGRyZXNzID0gMDsKKworCWZvciAoaSA9IDA7IGkgPCBDT05GSUdfRElNTV9TTE9UU19QRVJfQ1RMUjsgaSsrKSB7CisJCWlmIChjdHJsX251bSA9PSAwICYmIGkgPT0gMCkKKwkJCWkyY19hZGRyZXNzID0gU1BEX0VFUFJPTV9BRERSRVNTMTsKKwkJZ2V0X3NwZCgmKGN0cmxfZGltbXNfc3BkW2ldKSwgaTJjX2FkZHJlc3MpOworCX0KK30KKwordW5zaWduZWQgaW50IGZzbF9kZHJfZ2V0X21lbV9kYXRhX3JhdGUodm9pZCkKK3sKKwlyZXR1cm4gZ2V0X2Rkcl9mcmVxKDApOworfQorCisvKgorICogICAgIFRoZXJlIGFyZSB0cmFkaXRpb25hbGx5IHRocmVlIGJvYXJkLXNwZWNpZmljIFNEUkFNIHRpbWluZyBwYXJhbWV0ZXJzCisgKiAgICAgd2hpY2ggbXVzdCBiZSBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBwYXJ0aWN1bGFyIFBDQiBhcnR3b3JrLiAgVGhlc2UgYXJlOgorICogICAgIDEuKSBDUE8gKFJlYWQgQ2FwdHVyZSBEZWxheSkKKyAqICAgICAgICAgICAgIC0gVElNSU5HX0NGR18yIHJlZ2lzdGVyCisgKiAgICAgICAgICAgICBTb3VyY2U6IENhbGN1bGF0aW9uIGJhc2VkIG9uIGJvYXJkIHRyYWNlIGxlbmd0aHMgYW5kCisgKiAgICAgICAgICAgICAgICAgICAgIGNoaXAtc3BlY2lmaWMgaW50ZXJuYWwgZGVsYXlzLgorICogICAgIDIuKSBDTEtfQURKVVNUIChDbG9jayBhbmQgQWRkci9DbWQgYWxpZ25tZW50IGNvbnRyb2wpCisgKiAgICAgICAgICAgICAtIEREUl9TRFJBTV9DTEtfQ05UTCByZWdpc3RlcgorICogICAgICAgICAgICAgU291cmNlOiBTaWduYWwgSW50ZWdyaXR5IFNpbXVsYXRpb25zCisgKiAgICAgMy4pIDJUIFRpbWluZyBvbiBBZGRyL0N0bAorICogICAgICAgICAgICAgLSBUSU1JTkdfQ0ZHXzIgcmVnaXN0ZXIKKyAqICAgICAgICAgICAgIFNvdXJjZTogU2lnbmFsIEludGVncml0eSBTaW11bGF0aW9ucworICogICAgICAgICAgICAgVXN1YWxseSBvbmx5IG5lZWRlZCB3aXRoIGhlYXZ5IGxvYWQvdmVyeSBoaWdoIHNwZWVkICg+RERSMi04MDApCisgKgorICogICAgID09PT09PSBYUGVkaXRlNTUweCBERFIzLTgwMCByZWFkIGRlbGF5IGNhbGN1bGF0aW9ucyA9PT09PT0KKyAqCisgKiAgICAgVGhlIFAyMDIwIHByb2Nlc3NvciBwcm92aWRlcyBhbiBhdXRvbGV2ZWxpbmcgb3B0aW9uLiBTZXR0aW5nIENQTyB0bworICogICAgIDB4MWYgZW5hYmxlcyB0aGlzIGF1dG8gY29uZmlndXJhdGlvbi4KKyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisJdW5zaWduZWQgc2hvcnQgZGF0YXJhdGVfbWh6X2xvdzsKKwl1bnNpZ25lZCBzaG9ydCBkYXRhcmF0ZV9taHpfaGlnaDsKKwl1bnNpZ25lZCBjaGFyIGNsa19hZGp1c3Q7CisJdW5zaWduZWQgY2hhciBjcG87Cit9IGJvYXJkX3NwZWNpZmljX3BhcmFtZXRlcnNfdDsKKworY29uc3QgYm9hcmRfc3BlY2lmaWNfcGFyYW1ldGVyc190IGJvYXJkX3NwZWNpZmljX3BhcmFtZXRlcnNbXVsyMF0gPSB7CisJeworCQkvKiBDb250cm9sbGVyIDAgKi8KKyAgICAgICAgICAgICAgICB7CisJCQkvKiBERFIzLTYwMC82NjcgKi8KKwkJCS5kYXRhcmF0ZV9taHpfbG93CT0gNTAwLAorCQkJLmRhdGFyYXRlX21oel9oaWdoCT0gNzUwLAorCQkJLmNsa19hZGp1c3QJCT0gNSwKKwkJCS5jcG8JCQk9IDMxLAorCQl9LAorICAgICAgICAgICAgICAgIHsKKwkJCS8qIEREUjMtODAwICovCisJCQkuZGF0YXJhdGVfbWh6X2xvdwk9IDc1MCwKKwkJCS5kYXRhcmF0ZV9taHpfaGlnaAk9IDg1MCwKKwkJCS5jbGtfYWRqdXN0CQk9IDUsCisJCQkuY3BvCQkJPSAzMSwKKwkJfSwKKwl9LAorfTsKKwordm9pZCBmc2xfZGRyX2JvYXJkX29wdGlvbnMobWVtY3RsX29wdGlvbnNfdCAqcG9wdHMsCisJCQkJZGltbV9wYXJhbXNfdCAqcGRpbW0sCisJCQkJdW5zaWduZWQgaW50IGN0cmxfbnVtKQoreworCWNvbnN0IGJvYXJkX3NwZWNpZmljX3BhcmFtZXRlcnNfdCAqcGJzcCA9CisJCQkJJihib2FyZF9zcGVjaWZpY19wYXJhbWV0ZXJzW2N0cmxfbnVtXVswXSk7CisJdTMyIG51bV9wYXJhbXMgPSBzaXplb2YoYm9hcmRfc3BlY2lmaWNfcGFyYW1ldGVyc1tjdHJsX251bV0pIC8KKwkJCQlzaXplb2YoYm9hcmRfc3BlY2lmaWNfcGFyYW1ldGVyc1swXVswXSk7CisJdTMyIGk7CisJdWxvbmcgZGRyX2ZyZXE7CisKKwkvKgorCSAqIFNldCBvZHRfcmRfY2ZnIGFuZCBvZHRfd3JfY2ZnLiBJZiB0aGUgdGhlcmUgaXMgb25seSBvbmUgZGltbSBpbgorCSAqIHRoYXQgY29udHJvbGxlciwgc2V0IG9kdF93cl9jZmcgdG8gNCBmb3IgQ1MwLCBhbmQgMCB0byBDUzEuIElmCisJICogdGhlcmUgYXJlIHR3byBkaW1tcyBpbiB0aGUgY29udHJvbGxlciwgc2V0IG9kdF9yZF9jZmcgdG8gMyBhbmQKKwkgKiBvZHRfd3JfY2ZnIHRvIDMgZm9yIHRoZSBldmVuIENTLCAwIGZvciB0aGUgb2RkIENTLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBDT05GSUdfQ0hJUF9TRUxFQ1RTX1BFUl9DVFJMOyBpKyspIHsKKwkJaWYgKGkmMSkgewkvKiBvZGQgQ1MgKi8KKwkJCXBvcHRzLT5jc19sb2NhbF9vcHRzW2ldLm9kdF9yZF9jZmcgPSAwOworCQkJcG9wdHMtPmNzX2xvY2FsX29wdHNbaV0ub2R0X3dyX2NmZyA9IDA7CisJCX0gZWxzZSB7CS8qIGV2ZW4gQ1MgKi8KKwkJCWlmIChDT05GSUdfRElNTV9TTE9UU19QRVJfQ1RMUiA9PSAxKSB7CisJCQkJcG9wdHMtPmNzX2xvY2FsX29wdHNbaV0ub2R0X3JkX2NmZyA9IDA7CisJCQkJcG9wdHMtPmNzX2xvY2FsX29wdHNbaV0ub2R0X3dyX2NmZyA9IDQ7CisJCQl9IGVsc2UgaWYgKENPTkZJR19ESU1NX1NMT1RTX1BFUl9DVExSID09IDIpIHsKKwkJCQlwb3B0cy0+Y3NfbG9jYWxfb3B0c1tpXS5vZHRfcmRfY2ZnID0gMzsKKwkJCQlwb3B0cy0+Y3NfbG9jYWxfb3B0c1tpXS5vZHRfd3JfY2ZnID0gMzsKKwkJCX0KKwkJfQorCX0KKworCS8qCisJICogR2V0IGNsa19hZGp1c3QsIGNwbywgd3JpdGVfZGF0YV9kZWxheSwyVCwgYWNjb3JkaW5nIHRvIHRoZSBib2FyZCBkZHIKKwkgKiBmcmVxZW5jeSBhbmQgbl9iYW5rcyBzcGVjaWZpZWQgaW4gYm9hcmRfc3BlY2lmaWNfcGFyYW1ldGVycyB0YWJsZS4KKwkgKi8KKwlkZHJfZnJlcSA9IGdldF9kZHJfZnJlcSgwKSAvIDEwMDAwMDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX3BhcmFtczsgaSsrKSB7CisJCWlmIChkZHJfZnJlcSA+PSBwYnNwLT5kYXRhcmF0ZV9taHpfbG93ICYmCisJCSAgICBkZHJfZnJlcSA8PSBwYnNwLT5kYXRhcmF0ZV9taHpfaGlnaCkgeworCQkJcG9wdHMtPmNsa19hZGp1c3QgPSBwYnNwLT5jbGtfYWRqdXN0OworCQkJcG9wdHMtPmNwb19vdmVycmlkZSA9IHBic3AtPmNwbzsKKwkJCXBvcHRzLT50d29UX2VuID0gMDsKKwkJfQorCQlwYnNwKys7CisJfQorCisJLyoKKwkgKiBGYWN0b3JzIHRvIGNvbnNpZGVyIGZvciBoYWxmLXN0cmVuZ3RoIGRyaXZlciBlbmFibGU6CisJICoJLSBudW1iZXIgb2YgRElNTXMgaW5zdGFsbGVkCisJICovCisJcG9wdHMtPmhhbGZfc3RyZW5ndGhfZHJpdmVyX2VuYWJsZSA9IDA7CisKKwkvKgorCSAqIEVuYWJsZSBvbi1kaWUgdGVybWluYXRpb24uCisJICogRnJvbSB0aGUgTWljcm9uIFRlY2huaWNhbCBOb2RlIFROLTQxLTA0LCBSVFRfTm9tIHNob3VsZCB0eXBpY2FsbHkKKwkgKiBiZSAzMCB0byA0MCBvaG1zLCB3aGlsZSBSVFRfV1Igc2hvdWxkIGJlIDEyMCBvaG1zLiAgU2V0dGluZyBSVFRfV1IKKwkgKiBpcyBoYW5kbGVkIGluIHRoZSBGcmVlc2NhbGUgRERSMyBkcml2ZXIuICBTZXQgUlRUX05vbSBoZXJlLgorCSAqLworCXBvcHRzLT5ydHRfb3ZlcnJpZGUgPSAxOworCXBvcHRzLT5ydHRfb3ZlcnJpZGVfdmFsdWUgPSAzOworfQorCmRpZmYgLS1naXQgYS9ib2FyZC94ZXMveHBlZGl0ZTU1MHgvbGF3LmMgYi9ib2FyZC94ZXMveHBlZGl0ZTU1MHgvbGF3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ0NDQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3hlcy94cGVkaXRlNTUweC9sYXcuYwpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IDIwMTAgRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIEluYy4KKyAqIENvcHlyaWdodCAyMDA4IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwCisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vZnNsX2xhdy5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKworLyoKKyAqIE5vdGVzOgorICogICAgQ0NTUkJBUiBhbmQgTDItYXMtU1JBTSBkb24ndCBuZWVkIGEgY29uZmlndXJlZCBMb2NhbCBBY2Nlc3MgV2luZG93LgorICogICAgSWYgZmxhc2ggaXMgOE0gYXQgZGVmYXVsdCBwb3NpdGlvbiAobGFzdCA4TSksIG5vIExBVyBuZWVkZWQuCisgKi8KKworc3RydWN0IGxhd19lbnRyeSBsYXdfdGFibGVbXSA9IHsKKwlTRVRfTEFXKENPTkZJR19TWVNfRkxBU0hfQkFTRTIsIExBV19TSVpFXzI1Nk0sIExBV19UUkdUX0lGX0xCQyksCisJU0VUX0xBVyhDT05GSUdfU1lTX05BTkRfQkFTRSwgTEFXX1NJWkVfMU0sIExBV19UUkdUX0lGX0xCQyksCisjaWZkZWYgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUworCVNFVF9MQVcoQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUywgTEFXX1NJWkVfMUcsIExBV19UUkdUX0lGX1BDSUVfMSksCisJU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMsIExBV19TSVpFXzhNLCBMQVdfVFJHVF9JRl9QQ0lFXzEpLAorI2VuZGlmCisjaWZkZWYgQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUworCVNFVF9MQVcoQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUywgTEFXX1NJWkVfMjU2TSwgTEFXX1RSR1RfSUZfUENJRV8yKSwKKwlTRVRfTEFXKENPTkZJR19TWVNfUENJRTJfSU9fUEhZUywgTEFXX1NJWkVfOE0sIExBV19UUkdUX0lGX1BDSUVfMiksCisjZW5kaWYKKyNpZmRlZiBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTCisJU0VUX0xBVyhDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTLCBMQVdfU0laRV8yNTZNLCBMQVdfVFJHVF9JRl9QQ0lFXzMpLAorCVNFVF9MQVcoQ09ORklHX1NZU19QQ0lFM19JT19QSFlTLCBMQVdfU0laRV84TSwgTEFXX1RSR1RfSUZfUENJRV8zKSwKKyNlbmRpZgorfTsKKworaW50IG51bV9sYXdfZW50cmllcyA9IEFSUkFZX1NJWkUobGF3X3RhYmxlKTsKZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy94cGVkaXRlNTUweC90bGIuYyBiL2JvYXJkL3hlcy94cGVkaXRlNTUweC90bGIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjNmZjRkCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQveGVzL3hwZWRpdGU1NTB4L3RsYi5jCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorICogQ29weXJpZ2h0IDIwMDggRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDAKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKworc3RydWN0IGZzbF9lX3RsYl9lbnRyeSB0bGJfdGFibGVbXSA9IHsKKwkvKiBUTEIgMCAtIGZvciB0ZW1wIHN0YWNrIGluIGNhY2hlICovCisJU0VUX1RMQl9FTlRSWSgwLCBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIsIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiwKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIDAsCisJCTAsIDAsIEJPT0tFX1BBR0VTWl80SywgMCksCisJU0VUX1RMQl9FTlRSWSgwLCBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyA0ICogMTAyNCwKKwkJQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgNCAqIDEwMjQsCisJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCAwLAorCQkwLCAwLCBCT09LRV9QQUdFU1pfNEssIDApLAorCVNFVF9UTEJfRU5UUlkoMCwgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgOCAqIDEwMjQsCisJCUNPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIDggKiAxMDI0LAorCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgMCwKKwkJMCwgMCwgQk9PS0VfUEFHRVNaXzRLLCAwKSwKKwlTRVRfVExCX0VOVFJZKDAsIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIDEyICogMTAyNCwKKwkJQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgMTIgKiAxMDI0LAorCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgMCwKKwkJMCwgMCwgQk9PS0VfUEFHRVNaXzRLLCAwKSwKKworCS8qIFcqKkcqIC0gTk9SIGZsYXNoZXMgKi8KKwkvKiBUaGlzIHdpbGwgYmUgY2hhbmdlZCB0byAqSSpHKiBhZnRlciByZWxvY2F0aW9uIHRvIFJBTS4gKi8KKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfRkxBU0hfQkFTRTIsIENPTkZJR19TWVNfRkxBU0hfQkFTRTIsCisJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX1d8TUFTMl9HLAorCQkwLCAwLCBCT09LRV9QQUdFU1pfMjU2TSwgMSksCisKKwkvKiAqSSpHKiAtIENDU1JCQVIgKi8KKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfQ0NTUkJBUiwgQ09ORklHX1NZU19DQ1NSQkFSX1BIWVMsCisJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAorCQkwLCAxLCBCT09LRV9QQUdFU1pfMU0sIDEpLAorCisJLyogKkkqRyogLSBOQU5EIGZsYXNoICovCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX05BTkRfQkFTRSwgQ09ORklHX1NZU19OQU5EX0JBU0UsCisJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAorCQkwLCAyLCBCT09LRV9QQUdFU1pfMU0sIDEpLAorCisJLyogKipNKiogLSBCb290IHBhZ2UgZm9yIHNlY29uZGFyeSBwcm9jZXNzb3JzICovCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfQlBUUl9WSVJUX0FERFIsIENPTkZJR19CUFRSX1ZJUlRfQUREUiwKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfTSwKKwkJMCwgMywgQk9PS0VfUEFHRVNaXzRLLCAxKSwKKworI2lmZGVmIENPTkZJR19QQ0lFMQorCS8qICpJKkcqIC0gUENJZSAqLworCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUywgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUywKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCisJCTAsIDQsIEJPT0tFX1BBR0VTWl8xRywgMSksCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19QQ0lFMgorCS8qICpJKkcqIC0gUENJZSAqLworCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUywgQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUywKKwkJTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCisJCTAsIDUsIEJPT0tFX1BBR0VTWl8yNTZNLCAxKSwKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1BDSUUzCisJLyogKkkqRyogLSBQQ0llICovCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTLCBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTLAorCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKKwkJMCwgNiwgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKENPTkZJR19QQ0lFMSkgfHwgZGVmaW5lZChDT05GSUdfUENJRTIpIHx8IGRlZmluZWQoQ09ORklHX1BDSUUzKQorCS8qICpJKkcqIC0gUENJZSAqLworCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTLCBDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMsCisJCU1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAorCQkwLCA3LCBCT09LRV9QQUdFU1pfNjRNLCAxKSwKKyNlbmRpZgorfTsKKworaW50IG51bV90bGJfZW50cmllcyA9IEFSUkFZX1NJWkUodGxiX3RhYmxlKTsKZGlmZiAtLWdpdCBhL2JvYXJkL3hlcy94cGVkaXRlNTM3MC94cGVkaXRlNTM3MC5jIGIvYm9hcmQveGVzL3hwZWRpdGU1NTB4L3hwZWRpdGU1NTB4LmMKc2ltaWxhcml0eSBpbmRleCA4NyUKY29weSBmcm9tIGJvYXJkL3hlcy94cGVkaXRlNTM3MC94cGVkaXRlNTM3MC5jCmNvcHkgdG8gYm9hcmQveGVzL3hwZWRpdGU1NTB4L3hwZWRpdGU1NTB4LmMKaW5kZXggMmEwNjBjMi4uMmFkMzBhMyAxMDA2NDQKLS0tIGEvYm9hcmQveGVzL3hwZWRpdGU1MzcwL3hwZWRpdGU1MzcwLmMKKysrIGIvYm9hcmQveGVzL3hwZWRpdGU1NTB4L3hwZWRpdGU1NTB4LmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IDIwMDggRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIEluYy4KKyAqIENvcHlyaWdodCAyMDEwIEV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zLCBJbmMuCiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0zNiwyNiArMzYsNiBAQAogCiBleHRlcm4gdm9pZCBmdF9ib2FyZF9wY2lfc2V0dXAodm9pZCAqYmxvYiwgYmRfdCAqYmQpOwogCi1pbnQgY2hlY2tib2FyZCh2b2lkKQotewotCWNoYXIgKnM7Ci0KLQlwcmludGYoIkJvYXJkOiBYLUVTICVzIDNVIFZQWCBTQkNcbiIsIENPTkZJR19TWVNfQk9BUkRfTkFNRSk7Ci0JcHJpbnRmKCIgICAgICAgIik7Ci0JcyA9IGdldGVudigiYm9hcmRfcmV2Iik7Ci0JaWYgKHMpCi0JCXByaW50ZigiUmV2ICVzLCAiLCBzKTsKLQlzID0gZ2V0ZW52KCJzZXJpYWwjIik7Ci0JaWYgKHMpCi0JCXByaW50ZigiU2VyaWFsIyAlcywgIiwgcyk7Ci0JcyA9IGdldGVudigiYm9hcmRfY2ZnIik7Ci0JaWYgKHMpCi0JCXByaW50ZigiQ2ZnICVzIiwgcyk7Ci0JcHJpbnRmKCJcbiIpOwotCi0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lkIGZsYXNoX2NzX2ZpeHVwKHZvaWQpCiB7CiAJaW50IGZsYXNoX3NlbDsKZGlmZiAtLWdpdCBhL2JvYXJkL3htMjUwL01ha2VmaWxlIGIvYm9hcmQveG0yNTAvTWFrZWZpbGUKaW5kZXggYTE3NGY2Ni4uMTFlMmIzMCAxMDA2NDQKLS0tIGEvYm9hcmQveG0yNTAvTWFrZWZpbGUKKysrIGIvYm9hcmQveG0yNTAvTWFrZWZpbGUKQEAgLTI2LDE3ICsyNiwxNSBAQAogTElCCT0gJChvYmopbGliJChCT0FSRCkuYQogCiBDT0JKUwk6PSB4bTI1MC5vIGZsYXNoLm8KLVNPQkpTCTo9IGxvd2xldmVsX2luaXQubwogCi1TUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCitTUkNTCTo9ICQoQ09CSlM6Lm89LmMpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKLVNPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKIAotJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChTT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAKIGNsZWFuOgotCXJtIC1mICQoU09CSlMpICQoT0JKUykKKwlybSAtZiAkKE9CSlMpCiAKIGRpc3RjbGVhbjoJY2xlYW4KIAlybSAtZiAkKExJQikgY29yZSAqLmJhayAkKG9iaikuZGVwZW5kCmRpZmYgLS1naXQgYS9ib2FyZC94bTI1MC9jb25maWcubWsgYi9ib2FyZC94bTI1MC9jb25maWcubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZmEwZTUuLjAwMDAwMDAKLS0tIGEvYm9hcmQveG0yNTAvY29uZmlnLm1rCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIwotIyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNAotIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgotIwotIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotIyBwcm9qZWN0LgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0jIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotIyBNQSAwMjExMS0xMzA3IFVTQQotIwotCi0jCi0jIE1pY3JvU3lzIFhNMjUwIGJvYXJkOgotIwotCi0KLSMgVGhpcyBpcyB0aGUgYWRkcmVzcyB3aGVyZSBVLUJvb3QgbGl2ZXMgaW4gZmxhc2g6Ci0jQ09ORklHX1NZU19URVhUX0JBU0UgPSAwCi0KLSMgRklYTUU6IGFybWJvb3QgZG9lcyBvbmx5IHdvcmsgY29ycmVjdGx5IHdoZW4gYmVpbmcgY29tcGlsZWQKLSMgZm9yIHRoZSBhZGRyZXNzZXMgX2FmdGVyXyByZWxvY2F0aW9uIHRvIFJBTSEhIE90aGVyd2hpc2UgdGhlCi0jIC5ic3Mgc2VnbWVudCBpcyBhc3N1bWVkIGluIGZsYXNoLi4uCi1DT05GSUdfU1lTX1RFWFRfQkFTRSA9IDB4QTNGODAwMDAKZGlmZiAtLWdpdCBhL2JvYXJkL3htMjUwL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL3htMjUwL2xvd2xldmVsX2luaXQuUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIzMDU1MC4uMDAwMDAwMAotLS0gYS9ib2FyZC94bTI1MC9sb3dsZXZlbF9pbml0LlMKKysrIC9kZXYvbnVsbApAQCAtMSw1MTkgKzAsMCBAQAotLyoKLSAqIE1vc3Qgb2YgdGhpcyB0YWtlbiBmcm9tIFJlZGJvb3QgaGFsX3BsYXRmb3JtX3NldHVwLmggd2l0aCBjbGVhbnVwCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2luY2x1ZGUgPHZlcnNpb24uaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgotCi1EUkFNX1NJWkU6ICAubG9uZyAgIENPTkZJR19TWVNfRFJBTV9TSVpFCi0KLS8qIHdhaXQgZm9yIGNvcHJvY2Vzc29yIHdyaXRlIGNvbXBsZXRlICovCi0JLm1hY3JvIENQV0FJVCByZWcKLQltcmMJcDE1LDAsXHJlZyxjMixjMCwwCi0JbW92CVxyZWcsXHJlZwotCXN1YglwYyxwYywjNAotCS5lbmRtCi0vKgotCS5tYWNybyBTRVRfTEVEIHZhbAotCWxkcglyNiwgPUNSQURMRV9MRURfQ0xSX1JFRwotCWxkcglyNywgPTAKLQlzdHIJcjcsIFtyNl0KLQlsZHIJcjYsID1DUkFETEVfTEVEX1NFVF9SRUcKLQlsZHIJcjcsID1cdmFsCi0Jc3RyCXI3LCBbcjZdCi0JLmVuZG0KLSovCi0KLS5nbG9ibCBsb3dsZXZlbF9pbml0Ci1sb3dsZXZlbF9pbml0OgotCi0JbW92CXIxMCwgbHIKLQotCS8qIFNldCB1cCBHUElPIHBpbnMgZmlyc3QgKi8KLQotCWxkcglyMCwgICA9R1BTUjAKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR1BTUjBfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R1BTUjEKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR1BTUjFfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R1BTUjIKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR1BTUjJfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R1BDUjAKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR1BDUjBfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R1BDUjEKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR1BDUjFfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R1BDUjIKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR1BDUjJfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R1JFUjAKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR1JFUjBfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R1JFUjEKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR1JFUjFfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R1JFUjIKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR1JFUjJfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R0ZFUjAKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR0ZFUjBfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R0ZFUjEKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR0ZFUjFfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R0ZFUjIKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR0ZFUjJfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R1BEUjAKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR1BEUjBfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R1BEUjEKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR1BEUjFfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R1BEUjIKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR1BEUjJfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R0FGUjBfTAotCWxkcglyMSwgICA9Q09ORklHX1NZU19HQUZSMF9MX1ZBTAotCXN0cglyMSwgICBbcjBdCi0KLQlsZHIJcjAsICAgPUdBRlIwX1UKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR0FGUjBfVV9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HQUZSMV9MCi0JbGRyCXIxLCAgID1DT05GSUdfU1lTX0dBRlIxX0xfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCWxkcglyMCwgICA9R0FGUjFfVQotCWxkcglyMSwgICA9Q09ORklHX1NZU19HQUZSMV9VX1ZBTAotCXN0cglyMSwgICBbcjBdCi0KLQlsZHIJcjAsICAgPUdBRlIyX0wKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfR0FGUjJfTF9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JbGRyCXIwLCAgID1HQUZSMl9VCi0JbGRyCXIxLCAgID1DT05GSUdfU1lTX0dBRlIyX1VfVkFMCi0Jc3RyCXIxLCAgIFtyMF0KLQotCS8qIGVuYWJsZSBHUElPIHBpbnMgKi8KLQlsZHIJcjAsICAgPVBTU1IKLQlsZHIJcjEsICAgPUNPTkZJR19TWVNfUFNTUl9WQUwKLQlzdHIJcjEsICAgW3IwXQotCi0JLyogU0VUX0xFRCAxICovCi0KLQlsZHIJcjMsID1NU0MxCQkvKiBsb3cgLSBiYW5rIDIgTHViYm9jayBSZWdpc3RlcnMgLyBTUkFNICovCi0JbGRyCXIyLCA9Q09ORklHX1NZU19NU0MxX1ZBTAkvKiBoaWdoIC0gYmFuayAzIEV0aGVybmV0IENvbnRyb2xsZXIgKi8KLQlzdHIJcjIsIFtyM10JCS8qIG5lZWQgdG8gc2V0IE1TQzEgYmVmb3JlIHRyeWluZyB0byB3cml0ZSB0byB0aGUgSEVYIExFRHMgKi8KLQlsZHIJcjIsIFtyM10JCS8qIG5lZWQgdG8gcmVhZCBpdCBiYWNrIHRvIG1ha2Ugc3VyZSB0aGUgdmFsdWUgbGF0Y2hlcyAoc2VlIE1TQyBzZWN0aW9uIG9mIG1hbnVhbCkgKi8KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgSW5pdGxpYWxpemUgTWVtb3J5IENvbnRyb2xsZXIKLSAqCi0gKiAgU2VlIFBYQTI1MCBPcGVyYXRpbmcgU3lzdGVtIERldmVsb3BlcidzIEd1aWRlCi0gKgotICogIHBhdXNlIGZvciAyMDAgdVNlY3MtIGFsbG93IGludGVybmFsIGNsb2NrcyB0byBzZXR0bGUKLSAqICAqTm90ZTogb25seSBuZWVkIHRoaXMgaWYgaGFyZCByZXNldC4uLiBkb2luZyBpdCBhbnl3YXkgZm9yIG5vdwotICovCi0KLQlAIFN0ZXAgMQotCUAgLS0tLSBXYWl0IDIwMCB1c2VjCi0JbGRyCXIzLCA9T1NDUglAIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvCi0JbW92CXIyLCAjMAotCXN0cglyMiwgW3IzXQotCWxkcglyNCwgPTB4MzAwCUAgcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsIHNvIDB4MzAwIHNob3VsZCBiZSBwbGVudHkKLTE6Ci0JbGRyCXIyLCBbcjNdCi0JY21wCXI0LCByMgotCWJndAkxYgotCi0JLyogU0VUX0xFRCAyICovCi0KLW1lbV9pbml0OgotCUAgZ2V0IG1lbW9yeSBjb250cm9sbGVyIGJhc2UgYWRkcmVzcwotCWxkcglyMSwgID1NRU1DX0JBU0UKLQotCi1AKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotQCAgU3RlcCAyCi1ACi0KLQlAIFN0ZXAgMmEKLQlAIHdyaXRlIG1zYzAsIHJlYWQgYmFjayB0byBlbnN1cmUgZGF0YSBsYXRjaGVzCi0JQAotCWxkcglyMiwgICA9Q09ORklHX1NZU19NU0MwX1ZBTAotCXN0cglyMiwgICBbcjEsICNNU0MwX09GRlNFVF0KLQlsZHIJcjIsICAgW3IxLCAjTVNDMF9PRkZTRVRdCi0KLQlAIHdyaXRlIG1zYzEKLQlsZHIJcjIsICA9Q09ORklHX1NZU19NU0MxX1ZBTAotCXN0cglyMiwgIFtyMSwgI01TQzFfT0ZGU0VUXQotCWxkcglyMiwgIFtyMSwgI01TQzFfT0ZGU0VUXQotCi0JQCB3cml0ZSBtc2MyCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTVNDMl9WQUwKLQlzdHIJcjIsICBbcjEsICNNU0MyX09GRlNFVF0KLQlsZHIJcjIsICBbcjEsICNNU0MyX09GRlNFVF0KLQotCUAgU3RlcCAyYgotCUAgd3JpdGUgbWVjcgotCWxkcglyMiwgID1DT05GSUdfU1lTX01FQ1JfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTUVDUl9PRkZTRVRdCi0KLQlAIHdyaXRlIG1jbWVtMAotCWxkcglyMiwgID1DT05GSUdfU1lTX01DTUVNMF9WQUwKLQlzdHIJcjIsICBbcjEsICNNQ01FTTBfT0ZGU0VUXQotCi0JQCB3cml0ZSBtY21lbTEKLQlsZHIJcjIsICA9Q09ORklHX1NZU19NQ01FTTFfVkFMCi0Jc3RyCXIyLCAgW3IxLCAjTUNNRU0xX09GRlNFVF0KLQotCUAgd3JpdGUgbWNhdHQwCi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTUNBVFQwX1ZBTAotCXN0cglyMiwgIFtyMSwgI01DQVRUMF9PRkZTRVRdCi0KLQlAIHdyaXRlIG1jYXR0MQotCWxkcglyMiwgID1DT05GSUdfU1lTX01DQVRUMV9WQUwKLQlzdHIJcjIsICBbcjEsICNNQ0FUVDFfT0ZGU0VUXQotCi0JQCB3cml0ZSBtY2lvMAotCWxkcglyMiwgID1DT05GSUdfU1lTX01DSU8wX1ZBTAotCXN0cglyMiwgIFtyMSwgI01DSU8wX09GRlNFVF0KLQotCUAgd3JpdGUgbWNpbzEKLQlsZHIJcjIsICA9Q09ORklHX1NZU19NQ0lPMV9WQUwKLQlzdHIJcjIsICBbcjEsICNNQ0lPMV9PRkZTRVRdCi0KLQkvKlNFVF9MRUQgMyAqLwotCi0JQCBTdGVwIDJjCi0JQCBmbHktYnktZG1hIGlzIGRlZmVhdHVyZWQgb24gdGhpcyBwYXJ0Ci0JQCB3cml0ZSBmbHljbmZnCi0JQGxkcglyMiwgID1DT05GSUdfU1lTX0ZMWUNORkdfVkFMCi0JQHN0cglyMiwgIFtyMSwgI0ZMWUNORkdfT0ZGU0VUXQotCi0vKiBGSVhNRSBEb2VzIHRoaXMgc2VxdWVuY2UgcmVhbGx5IG1ha2Ugc2Vuc2UgKi8KLSNpZmRlZiBSRURCT09UX1dBWQotCUAgU3RlcCAyZAotCUAgZ2V0IHRoZSBtZHJlZnIgc2V0dGluZ3MKLQlsZHIJcjMsICA9Q09ORklHX1NZU19NRFJFRlJfVkFMCi0KLQlAIGV4dHJhY3QgRFJJIGZpZWxkICh3ZSBuZWVkIGEgdmFsaWQgRFJJIGZpZWxkKQotCUAKLQlsZHIJcjIsICA9MHhGRkYKLQotCUAgdmFsaWQgRFJJIGZpZWxkIGluIHIzCi0JQAotCWFuZAlyMywgIHIzLCAgcjIKLQotCUAgZ2V0IHRoZSByZXNldCBzdGF0ZSBvZiBNRFJFRlIKLQlACi0JbGRyCXI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCUAgY2xlYXIgdGhlIERSSSBmaWVsZAotCUAKLQliaWMJcjQsICByNCwgIHIyCi0KLQlAIGluc2VydCB0aGUgdmFsaWQgRFJJIGZpZWxkIGxvYWRlZCBhYm92ZQotCUAKLQlvcnIJcjQsICByNCwgIHIzCi0KLQlAIHdyaXRlIGJhY2sgbWRyZWZyCi0JQAotCXN0cglyNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQlAICpOb3RlOiBwcmVzZXJ2ZSB0aGUgbWRyZWZyIHZhbHVlIGluIHI0ICoKLQotCS8qU0VUX0xFRCA0ICovCi0KLUAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1AICBTdGVwIDMKLUAKLUAgTk8gU1JBTQotCi0JbW92ICAgcGMsIHIxMAotCi0KLUAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1AICBTdGVwIDQKLUAKLQotCUAgQXNzdW1lcyBwcmV2aW91cyBtZHJlZnIgdmFsdWUgaW4gcjQsIGlmIG5vdCB0aGVuIHJlYWQgY3VycmVudCBtZHJlZnIKLQotCUAgY2xlYXIgdGhlIGZyZWUtcnVubmluZyBjbG9jayBiaXRzCi0JQCAoY2xlYXIgSzBGcmVlLCBLMUZyZWUsIEsyRnJlZQotCUAKLQliaWMJcjQsICByNCwgICMoMHgwMDgwMDAwMCB8IDB4MDEwMDAwMDAgfCAweDAyMDAwMDAwKQotCi0JQCBzZXQgSzBSVU4gZm9yIENQTEQgY2xvY2sKLQlACi0Jb3JyCXI0LCAgcjQsICMweDAwMDAyMDAwCi0KLQlAIHNldCBLMVJVTiBpZiBiYW5rIDAgaW5zdGFsbGVkCi0JQAotCW9ycglyNCwgIHI0LCAjMHgwMDAxMDAwMAotCi0JQCB3cml0ZSBiYWNrIG1kcmVmcgotCUAKLQlzdHIJcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCWxkcglyNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQlAIGRlYXNzZXJ0IFNMRlJTSAotCUAKLQliaWMJcjQsICByNCwgICMweDAwNDAwMDAwCi0KLQlAIHdyaXRlIGJhY2sgbWRyZWZyCi0JQAotCXN0cglyNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQlAIGFzc2VydCBFMVBJTgotCUAKLQlvcnIJcjQsICByNCwgICMweDAwMDA4MDAwCi0KLQlAIHdyaXRlIGJhY2sgbWRyZWZyCi0JQAotCXN0cglyNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0JbGRyCXI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQlub3AKLQlub3AKLSNlbHNlCi0JQCBTdGVwIDJkCi0JQCBnZXQgdGhlIG1kcmVmciBzZXR0aW5ncwotCWxkcglyNCwgID1DT05GSUdfU1lTX01EUkVGUl9WQUwKLQotCUAgd3JpdGUgYmFjayBtZHJlZnIKLQlACi0Jc3RyCXI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCUAgIFN0ZXAgNAotCi0JQCBzZXQgSzBSVU4gZm9yIEZMQVNIIGNsb2NrCi0JQAotCW9ycglyNCwgIHI0LCAjMHgwMDAwMjAwMAotCi0JQCBzZXQgSzFSVU4gZm9yIGJhbmsgRFJBTSAwCi0JQAotCW9ycglyNCwgIHI0LCAjMHgwMDAxMDAwMAotCi0JQCBzZXQgSzJSVU4gZm9yIGJhbmsgUExECi0JQAotCW9ycglyNCwgIHI0LCAjMHgwMDA0MDAwMAotCi0JQCB3cml0ZSBiYWNrIG1kcmVmcgotCUAKLQlzdHIJcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCWxkcglyNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQlAIGRlYXNzZXJ0IFNMRlJTSAotCUAKLQliaWMJcjQsICByNCwgICMweDAwNDAwMDAwCi0KLQlAIHdyaXRlIGJhY2sgbWRyZWZyCi0JQAotCXN0cglyNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQlAIGFzc2VydCBFMVBJTgotCUAKLQlvcnIJcjQsICByNCwgICMweDAwMDA4MDAwCi0KLQlAIHdyaXRlIGJhY2sgbWRyZWZyCi0JQAotCXN0cglyNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0JbGRyCXI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQlub3AKLQlub3AKLSNlbmRpZgotCi0JQCBTdGVwIDRkCi0JQCBmZXRjaCBwbGF0Zm9ybSB2YWx1ZSBvZiBtZGNuZmcKLQlACi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfTURDTkZHX1ZBTAotCi0JQCBkaXNhYmxlIGFsbCBzZHJhbSBiYW5rcwotCUAKLQliaWMJcjIsICByMiwgICMoTURDTkZHX0RFMCB8IE1EQ05GR19ERTEpCi0JYmljCXIyLCAgcjIsICAjKE1EQ05GR19ERTIgfCBNRENORkdfREUzKQotCi0JQCBwcm9ncmFtIGJhbmtzIDAvMSBmb3IgYnVzIHdpZHRoCi0JQAotCWJpYwlyMiwgIHIyLCAgI01EQ05GR19EV0lEMAkJQDA9MzItYml0Ci0KLQlAIHdyaXRlIGluaXRpYWwgdmFsdWUgb2YgbWRjbmZnLCB3L28gZW5hYmxpbmcgc2RyYW0gYmFua3MKLQlACi0Jc3RyCXIyLCAgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotCUAgU3RlcCA0ZQotCUAgcGF1c2UgZm9yIDIwMCB1U2VjcwotCUAKLQlsZHIJcjMsID1PU0NSCUAgcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8KLQltb3YJcjIsICMwCi0Jc3RyCXIyLCBbcjNdCi0JbGRyCXI0LCA9MHgzMDAJQCByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eQotMToKLQlsZHIJcjIsIFtyM10KLQljbXAJcjQsIHIyCi0JYmd0CTFiCi0KLQkvKlNFVF9MRUQgNSAqLwotCi0JLyogV2h5IGlzIHRoaXMgaGVyZT8/PyAqLwotCW1vdglyMCwgIzB4NzgJCUB0dXJuIGV2ZXJ5dGhpbmcgb2ZmCi0JbWNyCXAxNSwgMCwgcjAsIGMxLCBjMCwgMAlAKGNhY2hlcyBvZmYsIE1NVSBvZmYsIGV0Yy4pCi0KLQlAIFN0ZXAgNGYKLQlAIEFjY2VzcyBtZW1vcnkgKm5vdCB5ZXQgZW5hYmxlZCogZm9yIENCUiByZWZyZXNoIGN5Y2xlcyAoOCkKLQlAIC0gQ0JSIGlzIGdlbmVyYXRlZCBmb3IgYWxsIGJhbmtzCi0KLQlsZHIJcjIsID1DT05GSUdfU1lTX0RSQU1fQkFTRQotCXN0cglyMiwgW3IyXQotCXN0cglyMiwgW3IyXQotCXN0cglyMiwgW3IyXQotCXN0cglyMiwgW3IyXQotCXN0cglyMiwgW3IyXQotCXN0cglyMiwgW3IyXQotCXN0cglyMiwgW3IyXQotCXN0cglyMiwgW3IyXQotCi0JQCBTdGVwIDRnCi0JQGdldCBtZW1vcnkgY29udHJvbGxlciBiYXNlIGFkZHJlc3MKLQlACi0JbGRyCXIxLCAgPU1FTUNfQkFTRQotCi0JQGZldGNoIGN1cnJlbnQgbWRjbmZnIHZhbHVlCi0JQAotCWxkcglyMywgIFtyMSwgI01EQ05GR19PRkZTRVRdCi0KLQlAZW5hYmxlIHNkcmFtIGJhbmsgMCBpZiBpbnN0YWxsZWQgKG11c3QgZG8gZm9yIGFueSBwb3B1bGF0ZWQgYmFuaykKLQlACi0Jb3JyCXIzLCAgcjMsICAjTURDTkZHX0RFMAotCi0JQHdyaXRlIGJhY2sgbWRjbmZnLCBlbmFibGluZyB0aGUgc2RyYW0gYmFuayhzKQotCUAKLQlzdHIJcjMsICBbcjEsICNNRENORkdfT0ZGU0VUXQotCi0JQCBTdGVwIDRoCi0JQCB3cml0ZSBtZG1ycwotCUAKLQlsZHIJcjIsICA9Q09ORklHX1NZU19NRE1SU19WQUwKLQlzdHIJcjIsICBbcjEsICNNRE1SU19PRkZTRVRdCi0KLQlAIERvbmUgTWVtb3J5IEluaXQKLQotCS8qU0VUX0xFRCA2ICovCi0KLQlAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQlAIERpc2FibGUgKG1hc2spIGFsbCBpbnRlcnJ1cHRzIGF0IHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgotCUAKLQotCUAgY2xlYXIgdGhlIGludGVycnVwdCBsZXZlbCByZWdpc3RlciAodXNlIElSUSwgbm90IEZJUSkKLQlACi0JbW92CXIxLCAjMAotCWxkcglyMiwgID1JQ0xSCi0Jc3RyCXIxLCAgW3IyXQotCi0JQCBTZXQgaW50ZXJydXB0IG1hc2sgcmVnaXN0ZXIKLQlACi0JbGRyCXIxLCAgPUNPTkZJR19TWVNfSUNNUl9WQUwKLQlsZHIJcjIsICA9SUNNUgotCXN0cglyMSwgIFtyMl0KLQotCUAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQlAIERpc2FibGUgdGhlIHBlcmlwaGVyYWwgY2xvY2tzLCBhbmQgc2V0IHRoZSBjb3JlIGNsb2NrCi0JQAotCi0JQCBUdXJuIE9mZiBBTEwgb24tY2hpcCBwZXJpcGhlcmFsIGNsb2NrcyBmb3IgcmUtY29uZmlndXJhdGlvbgotCUAKLQlsZHIJcjEsICA9Q0tFTgotCW1vdglyMiwgICMwCi0Jc3RyCXIyLCAgW3IxXQotCi0JQCBzZXQgY29yZSBjbG9ja3MKLQlACi0JbGRyCXIyLCAgPUNPTkZJR19TWVNfQ0NDUl9WQUwKLQlsZHIJcjEsICA9Q0NDUgotCXN0cglyMiwgIFtyMV0KLQotI2lmZGVmIEVOQUJMRTMyS0haCi0JQCBlbmFibGUgdGhlIDMyS2h6IG9zY2lsbGF0b3IgZm9yIFJUQyBhbmQgUG93ZXJNYW5hZ2VyCi0JQAotCWxkcglyMSwgID1PU0NDCi0JbW92CXIyLCAgI09TQ0NfT09OCi0Jc3RyCXIyLCAgW3IxXQotCi0JQCBOT1RFOgkgc3BpbiBoZXJlIHVudGlsIE9TQ0MuT09LIGdldCBzZXQsCi0JQAkgbWVhbmluZyB0aGUgUExMIGhhcyBzZXR0bGVkLgotCUAKLTYwOgotCWxkcglyMiwgW3IxXQotCWFuZHMJcjIsIHIyLCAjMQotCWJlcQk2MGIKLSNlbmRpZgotCi0JQCBUdXJuIG9uIG5lZWRlZCBjbG9ja3MKLQlACi0JbGRyCXIxLCAgPUNLRU4KLQlsZHIJcjIsICA9Q09ORklHX1NZU19DS0VOX1ZBTAotCXN0cglyMiwgIFtyMV0KLQotCS8qU0VUX0xFRCA3ICovCi0KLS8qIElzIHRoaXMgbmVlZGVkPz8/PyAqLwotI2RlZmluZSBOT0RFQlVHCi0jaWZkZWYgTk9ERUJVRwotCS8qRGlzYWJsZSBzb2Z0d2FyZSBhbmQgZGF0YSBicmVha3BvaW50cyAqLwotCW1vdglyMCwjMAotCW1jcglwMTUsMCxyMCxjMTQsYzgsMAkvKiBpYmNyMCAqLwotCW1jcglwMTUsMCxyMCxjMTQsYzksMAkvKiBpYmNyMSAqLwotCW1jcglwMTUsMCxyMCxjMTQsYzQsMAkvKiBkYmNvbiAqLwotCi0JLypFbmFibGUgYWxsIGRlYnVnIGZ1bmN0aW9uYWxpdHkgKi8KLQltb3YJcjAsIzB4ODAwMDAwMDAKLQltY3IJcDE0LDAscjAsYzEwLGMwLDAJLyogZGNzciAqLwotCi0jZW5kaWYKLQotCS8qU0VUX0xFRCA4ICovCi0KLQltb3YJcGMsIHIxMAotCi1AIEVuZCBsb3dsZXZlbF9pbml0CmRpZmYgLS1naXQgYS9ib2FyZC94bTI1MC94bTI1MC5jIGIvYm9hcmQveG0yNTAveG0yNTAuYwppbmRleCAyNDZiZGRlLi4zMTg4Y2YyIDEwMDY0NAotLS0gYS9ib2FyZC94bTI1MC94bTI1MC5jCisrKyBiL2JvYXJkL3htMjUwL3htMjUwLmMKQEAgLTU2LDYgKzU2LDEwIEBACiBib2FyZF9pbml0ICh2b2lkKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiB7CisJLyogV2UgaGF2ZSBSQU0sIGRpc2FibGUgY2FjaGUgKi8KKwlkY2FjaGVfZGlzYWJsZSgpOworCWljYWNoZV9kaXNhYmxlKCk7CisKIAkvKiBhcmNoIG51bWJlciBvZiBNaWNyb1N5cyBYTTI1MCAqLwogCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSBNQUNIX1RZUEVfWE0yNTA7CiAKQEAgLTY1LDIxICs2OSwxOCBAQAogCXJldHVybiAwOwogfQogCi1pbnQKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotZHJhbV9pbml0ICh2b2lkKQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitleHRlcm4gdm9pZCBweGFfZHJhbV9pbml0KHZvaWQpOworaW50IGRyYW1faW5pdCh2b2lkKQoreworCXB4YV9kcmFtX2luaXQoKTsKKwlnZC0+cmFtX3NpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBkcmFtX2luaXRfYmFua3NpemUodm9pZCkKIHsKIAlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBQSFlTX1NEUkFNXzE7Ci0JZ2QtPmJkLT5iaV9kcmFtWzBdLnNpemUgID0gUEhZU19TRFJBTV8xX1NJWkU7Ci0JZ2QtPmJkLT5iaV9kcmFtWzFdLnN0YXJ0ID0gUEhZU19TRFJBTV8yOwotCWdkLT5iZC0+YmlfZHJhbVsxXS5zaXplICA9IFBIWVNfU0RSQU1fMl9TSVpFOwotCWdkLT5iZC0+YmlfZHJhbVsyXS5zdGFydCA9IFBIWVNfU0RSQU1fMzsKLQlnZC0+YmQtPmJpX2RyYW1bMl0uc2l6ZSAgPSBQSFlTX1NEUkFNXzNfU0laRTsKLQlnZC0+YmQtPmJpX2RyYW1bM10uc3RhcnQgPSBQSFlTX1NEUkFNXzQ7Ci0JZ2QtPmJkLT5iaV9kcmFtWzNdLnNpemUgID0gUEhZU19TRFJBTV80X1NJWkU7Ci0KLQlyZXR1cm4gKDApOworCWdkLT5iZC0+YmlfZHJhbVswXS5zaXplID0gUEhZU19TRFJBTV8xX1NJWkU7CiB9CiAKICNpZmRlZiBDT05GSUdfQ01EX05FVApkaWZmIC0tZ2l0IGEvYm9hcmQveHNlbmdpbmUvTWFrZWZpbGUgYi9ib2FyZC94c2VuZ2luZS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMyMzkzNS4uMDAwMDAwMAotLS0gYS9ib2FyZC94c2VuZ2luZS9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLSMKLSMgKEMpIENvcHlyaWdodCAyMDAwLTIwMDYKLSMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KLSMKLSMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSMgcHJvamVjdC4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotIyB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSMgTUEgMDIxMTEtMTMwNyBVU0EKLSMKLQotaW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCi0KLUxJQgk9ICQob2JqKWxpYiQoQk9BUkQpLmEKLQotQ09CSlMJOj0geHNlbmdpbmUubyBmbGFzaC5vCi1TT0JKUwk6PSBsb3dsZXZlbF9pbml0Lm8KLQotU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQotT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCi1TT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCi0KLSQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCi0KLWNsZWFuOgotCXJtIC1mICQoU09CSlMpICQoT0JKUykKLQotZGlzdGNsZWFuOgljbGVhbgotCXJtIC1mICQoTElCKSBjb3JlICouYmFrICQob2JqKS5kZXBlbmQKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIGRlZmluZXMgJChvYmopLmRlcGVuZCB0YXJnZXQKLWluY2x1ZGUgJChTUkNUUkVFKS9ydWxlcy5tawotCi1zaW5jbHVkZSAkKG9iaikuZGVwZW5kCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2JvYXJkL3hzZW5naW5lL2NvbmZpZy5tayBiL2JvYXJkL3hzZW5naW5lL2NvbmZpZy5tawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIxYmIzYi4uMDAwMDAwMAotLS0gYS9ib2FyZC94c2VuZ2luZS9jb25maWcubWsKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1DT05GSUdfU1lTX1RFWFRfQkFTRSA9IDB4QTNGODAwMDAKZGlmZiAtLWdpdCBhL2JvYXJkL3hzZW5naW5lL2ZsYXNoLmMgYi9ib2FyZC94c2VuZ2luZS9mbGFzaC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzY5MDVhLi4wMDAwMDAwCi0tLSBhL2JvYXJkL3hzZW5naW5lL2ZsYXNoLmMKKysrIC9kZXYvbnVsbApAQCAtMSw0NzAgKzAsMCBAQAotLyoKLSAqIChDKSBDb3B5cmlnaHQgMjAwMgotICogUm9iZXJ0IFNjaHdlYmVsLCBQZW5ndXRyb25peCwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+Ci0gKgotICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKLSAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGNvbW1vbi5oPgotI2luY2x1ZGUgPGxpbnV4L2J5dGVvcmRlci9zd2FiLmg+Ci0KLSNkZWZpbmUgU1dBUCh4KSAgICAgICAgICAgICAgIF9fc3dhYjMyKHgpCi0KLWZsYXNoX2luZm9fdAlmbGFzaF9pbmZvW0NPTkZJR19TWVNfTUFYX0ZMQVNIX0JBTktTXTsgLyogaW5mbyBmb3IgRkxBU0ggY2hpcHMgKi8KLQotLyogRnVuY3Rpb25zICovCi1zdGF0aWMgdWxvbmcgZmxhc2hfZ2V0X3NpemUgKHZ1X2xvbmcgKmFkZHIsIGZsYXNoX2luZm9fdCAqaW5mbyk7Ci1zdGF0aWMgaW50IHdyaXRlX3dvcmQgKGZsYXNoX2luZm9fdCAqaW5mbywgdWxvbmcgZGVzdCwgdWxvbmcgZGF0YSk7Ci1zdGF0aWMgdm9pZCBmbGFzaF9nZXRfb2Zmc2V0cyAodWxvbmcgYmFzZSwgZmxhc2hfaW5mb190ICppbmZvKTsKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi11bnNpZ25lZCBsb25nIGZsYXNoX2luaXQgKHZvaWQpCi17Ci0JaW50IGk7Ci0JdWxvbmcgc2l6ZSA9IDA7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX1NZU19NQVhfRkxBU0hfQkFOS1M7IGkrKykgewotCQlzd2l0Y2ggKGkpIHsKLQkJY2FzZSAwOgotCQkJZmxhc2hfZ2V0X3NpemUgKCh2dV9sb25nICopIFBIWVNfRkxBU0hfMSwgJmZsYXNoX2luZm9baV0pOwotCQkJZmxhc2hfZ2V0X29mZnNldHMgKFBIWVNfRkxBU0hfMSwgJmZsYXNoX2luZm9baV0pOwotCQkJYnJlYWs7Ci0JCWNhc2UgMToKLQkJCWZsYXNoX2dldF9zaXplICgodnVfbG9uZyAqKSBQSFlTX0ZMQVNIXzIsICZmbGFzaF9pbmZvW2ldKTsKLQkJCWZsYXNoX2dldF9vZmZzZXRzIChQSFlTX0ZMQVNIXzIsICZmbGFzaF9pbmZvW2ldKTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJcGFuaWMgKCJjb25maWd1cmVkIHRvbyBtYW55IGZsYXNoIGJhbmtzIVxuIik7Ci0JCQlicmVhazsKLQkJfQotCQlzaXplICs9IGZsYXNoX2luZm9baV0uc2l6ZTsKLQl9Ci0KLQkvKiBQcm90ZWN0IG1vbml0b3IgYW5kIGVudmlyb25tZW50IHNlY3RvcnMgKi8KLQlmbGFzaF9wcm90ZWN0ICggRkxBR19QUk9URUNUX1NFVCxDT05GSUdfU1lTX0ZMQVNIX0JBU0UsQ09ORklHX1NZU19GTEFTSF9CQVNFICsgbW9uaXRvcl9mbGFzaF9sZW4gLSAxLCZmbGFzaF9pbmZvWzBdICk7Ci0JZmxhc2hfcHJvdGVjdCAoIEZMQUdfUFJPVEVDVF9TRVQsQ09ORklHX0VOVl9BRERSLENPTkZJR19FTlZfQUREUiArIENPTkZJR19FTlZfU0laRSAtIDEsICZmbGFzaF9pbmZvWzBdICk7Ci0KLQlyZXR1cm4gc2l6ZTsKLX0KLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi1zdGF0aWMgdm9pZCBmbGFzaF9nZXRfb2Zmc2V0cyAodWxvbmcgYmFzZSwgZmxhc2hfaW5mb190ICppbmZvKQotewotCWludCBpOwotCi0JaWYgKGluZm8tPmZsYXNoX2lkID09IEZMQVNIX1VOS05PV04pIHJldHVybjsKLQotCWlmICgoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9WRU5ETUFTSykgPT0gRkxBU0hfTUFOX0FNRCkgewotCQlmb3IgKGkgPSAwOyBpIDwgaW5mby0+c2VjdG9yX2NvdW50OyBpKyspIHsKLQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZSArIChpICogUEhZU19GTEFTSF9TRUNUX1NJWkUpOwotCQkJaW5mby0+cHJvdGVjdFtpXSA9IDA7Ci0JCX0KLQl9Ci19Ci0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqLwotdm9pZCBmbGFzaF9wcmludF9pbmZvICAoZmxhc2hfaW5mb190ICppbmZvKQotewotCWludCBpOwotCi0JaWYgKGluZm8tPmZsYXNoX2lkID09IEZMQVNIX1VOS05PV04pIHsKLQkJcHJpbnRmICgibWlzc2luZyBvciB1bmtub3duIEZMQVNIIHR5cGVcbiIpOwotCQlyZXR1cm47Ci0JfQotCi0Jc3dpdGNoIChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX1ZFTkRNQVNLKSB7Ci0JY2FzZSBGTEFTSF9NQU5fQU1EOglwcmludGYgKCJBTUQgIik7CQlicmVhazsKLQljYXNlIEZMQVNIX01BTl9GVUo6CXByaW50ZiAoIkZVSklUU1UgIik7CQlicmVhazsKLQlkZWZhdWx0OgkJcHJpbnRmICgiVW5rbm93biBWZW5kb3IgIik7CWJyZWFrOwotCX0KLQotCXN3aXRjaCAoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9UWVBFTUFTSykgewotCWNhc2UgRkxBU0hfQU1MVjY0MFU6CXByaW50ZiAoIkFNMjlMVjY0ME1MICg2NE1iaXQsIHVuaWZvcm0gc2VjdG9yIHNpemUpXG4iKTsKLQkJCQlicmVhazsKLQljYXNlIEZMQVNIX1MyOUdMMDY0TToJcHJpbnRmICgiUzI5R0wwNjRNICg2NE1iaXQsIHRvcCBib290IHNlY3RvciBzaXplKVxuIik7Ci0JCQkJYnJlYWs7Ci0JZGVmYXVsdDoJCXByaW50ZiAoIlVua25vd24gQ2hpcCBUeXBlXG4iKTsKLQkJCQlicmVhazsKLQl9Ci0KLQlwcmludGYgKCIgIFNpemU6ICVsZCBNQiBpbiAlZCBTZWN0b3JzXG4iLAotCQlpbmZvLT5zaXplID4+IDIwLCBpbmZvLT5zZWN0b3JfY291bnQpOwotCi0JcHJpbnRmICgiICBTZWN0b3IgU3RhcnQgQWRkcmVzc2VzOiIpOwotCWZvciAoaT0wOyBpPGluZm8tPnNlY3Rvcl9jb3VudDsgKytpKSB7Ci0JCWlmICgoaSAlIDUpID09IDApCi0JCQlwcmludGYgKCJcbiAgICIpOwotCQlwcmludGYgKCIgJTA4bFglcyIsCi0JCQlpbmZvLT5zdGFydFtpXSwKLQkJCWluZm8tPnByb3RlY3RbaV0gPyAiIChSTykiIDogIiAgICAgIgotCQkpOwotCX0KLQlwcmludGYgKCJcbiIpOwotCXJldHVybjsKLX0KLQotLyoKLSAqIFRoZSBmb2xsb3dpbmcgY29kZSBjYW5ub3QgYmUgcnVuIGZyb20gRkxBU0ghCi0gKi8KLXN0YXRpYyB1bG9uZyBmbGFzaF9nZXRfc2l6ZSAodnVfbG9uZyAqYWRkciwgZmxhc2hfaW5mb190ICppbmZvKQotewotCXNob3J0IGk7Ci0JdWxvbmcgdmFsdWU7Ci0JdWxvbmcgYmFzZSA9ICh1bG9uZylhZGRyOwotCi0JLyogV3JpdGUgYXV0byBzZWxlY3QgY29tbWFuZDogcmVhZCBNYW51ZmFjdHVyZXIgSUQgKi8KLQlhZGRyWzB4MDU1NV0gPSAweDAwQUEwMEFBOwotCWFkZHJbMHgwMkFBXSA9IDB4MDA1NTAwNTU7Ci0JYWRkclsweDA1NTVdID0gMHgwMDkwMDA5MDsKLQotCXZhbHVlID0gYWRkclswXTsKLQotCWRlYnVnICgiTWFudWYuIElEIEAgMHglMDhseDogMHglMDhseFxuIiwgKHVsb25nKWFkZHIsIHZhbHVlKTsKLQotCXN3aXRjaCAodmFsdWUpIHsKLQljYXNlIEFNRF9NQU5VRkFDVDoKLQkJZGVidWcgKCJNYW51ZmFjdHVyZXI6IEFNRFxuIik7Ci0JCWluZm8tPmZsYXNoX2lkID0gRkxBU0hfTUFOX0FNRDsKLQkJYnJlYWs7Ci0JY2FzZSBGVUpfTUFOVUZBQ1Q6Ci0JCWRlYnVnICgiTWFudWZhY3R1cmVyOiBGVUpJVFNVXG4iKTsKLQkJaW5mby0+Zmxhc2hfaWQgPSBGTEFTSF9NQU5fRlVKOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlkZWJ1ZyAoIk1hbnVmYWN0dXJlcjogKioqIHVua25vd24gKioqXG4iKTsKLQkJaW5mby0+Zmxhc2hfaWQgPSBGTEFTSF9VTktOT1dOOwotCQlpbmZvLT5zZWN0b3JfY291bnQgPSAwOwotCQlpbmZvLT5zaXplID0gMDsKLQkJcmV0dXJuICgwKTsJCQkvKiBubyBvciB1bmtub3duIGZsYXNoCSovCi0JfQotCi0JdmFsdWUgPSBhZGRyWzFdOwkJCS8qIGRldmljZSBJRAkJKi8KLQotCWRlYnVnICgiRGV2aWNlIElEIEAgMHglMDhseDogMHglMDhseFxuIiwgKHVsb25nKSgmYWRkclsxXSksIHZhbHVlKTsKLQotCXN3aXRjaCAodmFsdWUpIHsKLQotCWNhc2UgQU1EX0lEX01JUlJPUjoKLQkJZGVidWcgKCJNaXJyb3IgQml0IGZsYXNoOiBhZGRyWzE0XSA9ICUwOGxYICBhZGRyWzE1XSA9ICUwOGxYXG4iLAotCQkJYWRkclsxNF0sIGFkZHJbMTVdKTsKLQkJc3dpdGNoKGFkZHJbMTRdKSB7Ci0JCWNhc2UgQU1EX0lEX0xWNjQwVV8yOgotCQkJaWYgKGFkZHJbMTVdICE9IEFNRF9JRF9MVjY0MFVfMykgewotCQkJCWRlYnVnICgiQ2hpcDogQU1MVjY0MFUgLT4gdW5rbm93blxuIik7Ci0JCQkJaW5mby0+Zmxhc2hfaWQgPSBGTEFTSF9VTktOT1dOOwotCQkJfSBlbHNlIHsKLQkJCQlkZWJ1ZyAoIkNoaXA6IEFNTFY2NDBVXG4iKTsKLQkJCQlpbmZvLT5mbGFzaF9pZCArPSBGTEFTSF9BTUxWNjQwVTsKLQkJCQlpbmZvLT5zZWN0b3JfY291bnQgPSAxMjg7Ci0JCQkJaW5mby0+c2l6ZSA9IDB4MDEwMDAwMDA7Ci0JCQl9Ci0JCQlicmVhazsJCQkJLyogPT4gMTYgTUIJKi8KLQkJY2FzZSBBTURfSURfR0wwNjRNVF8yOgotCQkJaWYgKGFkZHJbMTVdICE9IEFNRF9JRF9HTDA2NE1UXzMpIHsKLQkJCQlkZWJ1ZyAoIkNoaXA6IFMyOUdMMDY0TS1SMyAtPiB1bmtub3duXG4iKTsKLQkJCQlpbmZvLT5mbGFzaF9pZCA9IEZMQVNIX1VOS05PV047Ci0JCQl9IGVsc2UgewotCQkJCWRlYnVnICgiQ2hpcDogUzI5R0wwNjRNLVIzXG4iKTsKLQkJCQlpbmZvLT5mbGFzaF9pZCArPSBGTEFTSF9TMjlHTDA2NE07Ci0JCQkJaW5mby0+c2VjdG9yX2NvdW50ID0gMTI4OwotCQkJCWluZm8tPnNpemUgPSAweDAxMDAwMDAwOwotCQkJfQotCQkJYnJlYWs7CQkJCS8qID0+IDE2IE1CCSovCi0JCWRlZmF1bHQ6Ci0JCQlkZWJ1ZyAoIkNoaXA6ICoqKiB1bmtub3duICoqKlxuIik7Ci0JCQlpbmZvLT5mbGFzaF9pZCA9IEZMQVNIX1VOS05PV047Ci0JCQlicmVhazsKLQkJfQotCQlicmVhazsKLQotCWRlZmF1bHQ6Ci0JCWluZm8tPmZsYXNoX2lkID0gRkxBU0hfVU5LTk9XTjsKLQkJcmV0dXJuICgwKTsJCQkvKiA9PiBubyBvciB1bmtub3duIGZsYXNoICovCi0JfQotCi0JLyogc2V0IHVwIHNlY3RvciBzdGFydCBhZGRyZXNzIHRhYmxlICovCi0Jc3dpdGNoICh2YWx1ZSkgewotCWNhc2UgQU1EX0lEX01JUlJPUjoKLQkJc3dpdGNoIChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX1RZUEVNQVNLKSB7Ci0JCS8qIG9ubHkga25vd24gdHlwZXMgaGVyZSAtIG5vIGRlZmF1bHQgKi8KLQkJY2FzZSBGTEFTSF9BTUxWMTI4VToKLQkJY2FzZSBGTEFTSF9BTUxWNjQwVToKLQkJY2FzZSBGTEFTSF9BTUxWMzIwVToKLQkJCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykgewotCQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZTsKLQkJCQliYXNlICs9IDB4MjAwMDA7Ci0JCQl9Ci0JCQlicmVhazsKLQkJY2FzZSBGTEFTSF9BTUxWMzIwQjoKLQkJCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykgewotCQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZTsKLQkJCQkvKgotCQkJCSAqIFRoZSBmaXJzdCA4IHNlY3RvcnMgYXJlIDgga0IsCi0JCQkJICogYWxsIHRoZSBvdGhlciBvbmVzICBhcmUgNjQga0IKLQkJCQkgKi8KLQkJCQliYXNlICs9IChpIDwgOCkKLQkJCQkJPyAgMiAqICggOCA8PCAxMCkKLQkJCQkJOiAgMiAqICg2NCA8PCAxMCk7Ci0JCQl9Ci0JCQlicmVhazsKLQkJfQotCQlicmVhazsKLQotCWRlZmF1bHQ6Ci0JCXJldHVybiAoMCk7Ci0JCWJyZWFrOwotCX0KLQotI2lmIDAKLQkvKiBjaGVjayBmb3IgcHJvdGVjdGVkIHNlY3RvcnMgKi8KLQlmb3IgKGkgPSAwOyBpIDwgaW5mby0+c2VjdG9yX2NvdW50OyBpKyspIHsKLQkJLyogcmVhZCBzZWN0b3IgcHJvdGVjdGlvbiBhdCBzZWN0b3IgYWRkcmVzcywgKEE3IC4uIEEwKSA9IDB4MDIgKi8KLQkJLyogRDAgPSAxIGlmIHByb3RlY3RlZCAqLwotCQlhZGRyID0gKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoaW5mby0+c3RhcnRbaV0pOwotCQlpbmZvLT5wcm90ZWN0W2ldID0gYWRkclsyXSAmIDE7Ci0JfQotI2VuZGlmCi0KLQkvKgotCSAqIFByZXZlbnQgd3JpdGVzIHRvIHVuaW5pdGlhbGl6ZWQgRkxBU0guCi0JICovCi0JaWYgKGluZm8tPmZsYXNoX2lkICE9IEZMQVNIX1VOS05PV04pIHsKLQkJYWRkciA9ICh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopaW5mby0+c3RhcnRbMF07Ci0KLQkJKmFkZHIgPSAweDAwRjAwMEYwOwkvKiByZXNldCBiYW5rICovCi0JfQotCi0JcmV0dXJuIChpbmZvLT5zaXplKTsKLX0KLQotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLQotaW50CWZsYXNoX2VyYXNlIChmbGFzaF9pbmZvX3QgKmluZm8sIGludCBzX2ZpcnN0LCBpbnQgc19sYXN0KQotewotCXZ1X2xvbmcgKmFkZHIgPSAodnVfbG9uZyopKGluZm8tPnN0YXJ0WzBdKTsKLQlpbnQgZmxhZywgcHJvdCwgc2VjdCwgbF9zZWN0OwotCXVsb25nIHN0YXJ0LCBub3csIGxhc3Q7Ci0KLQlkZWJ1ZyAoImZsYXNoX2VyYXNlOiBmaXJzdDogJWQgbGFzdDogJWRcbiIsIHNfZmlyc3QsIHNfbGFzdCk7Ci0KLQlpZiAoKHNfZmlyc3QgPCAwKSB8fCAoc19maXJzdCA+IHNfbGFzdCkpIHsKLQkJaWYgKGluZm8tPmZsYXNoX2lkID09IEZMQVNIX1VOS05PV04pIHsKLQkJCXByaW50ZiAoIi0gbWlzc2luZ1xuIik7Ci0JCX0gZWxzZSB7Ci0JCQlwcmludGYgKCItIG5vIHNlY3RvcnMgdG8gZXJhc2VcbiIpOwotCQl9Ci0JCXJldHVybiAxOwotCX0KLQotCWlmICgoaW5mby0+Zmxhc2hfaWQgPT0gRkxBU0hfVU5LTk9XTikgfHwKLQkgICAgKGluZm8tPmZsYXNoX2lkID4gRkxBU0hfQU1EX0NPTVApKSB7Ci0JCXByaW50ZiAoIkNhbid0IGVyYXNlIHVua25vd24gZmxhc2ggdHlwZSAlMDhseCAtIGFib3J0ZWRcbiIsCi0JCQlpbmZvLT5mbGFzaF9pZCk7Ci0JCXJldHVybiAxOwotCX0KLQotCXByb3QgPSAwOwotCWZvciAoc2VjdD1zX2ZpcnN0OyBzZWN0PD1zX2xhc3Q7ICsrc2VjdCkgewotCQlpZiAoaW5mby0+cHJvdGVjdFtzZWN0XSkgewotCQkJcHJvdCsrOwotCQl9Ci0JfQotCi0JaWYgKHByb3QpIHsKLQkJcHJpbnRmICgiLSBXYXJuaW5nOiAlZCBwcm90ZWN0ZWQgc2VjdG9ycyB3aWxsIG5vdCBiZSBlcmFzZWQhXG4iLAotCQkJcHJvdCk7Ci0JfSBlbHNlIHsKLQkJcHJpbnRmICgiXG4iKTsKLQl9Ci0KLQlsX3NlY3QgPSAtMTsKLQotCS8qIERpc2FibGUgaW50ZXJydXB0cyB3aGljaCBtaWdodCBjYXVzZSBhIHRpbWVvdXQgaGVyZSAqLwotCWZsYWcgPSBkaXNhYmxlX2ludGVycnVwdHMoKTsKLQotCWFkZHJbMHgwNTU1XSA9IDB4MDBBQTAwQUE7Ci0JYWRkclsweDAyQUFdID0gMHgwMDU1MDA1NTsKLQlhZGRyWzB4MDU1NV0gPSAweDAwODAwMDgwOwotCWFkZHJbMHgwNTU1XSA9IDB4MDBBQTAwQUE7Ci0JYWRkclsweDAyQUFdID0gMHgwMDU1MDA1NTsKLQotCS8qIFN0YXJ0IGVyYXNlIG9uIHVucHJvdGVjdGVkIHNlY3RvcnMgKi8KLQlmb3IgKHNlY3QgPSBzX2ZpcnN0OyBzZWN0PD1zX2xhc3Q7IHNlY3QrKykgewotCQlpZiAoaW5mby0+cHJvdGVjdFtzZWN0XSA9PSAwKSB7CS8qIG5vdCBwcm90ZWN0ZWQgKi8KLQkJCWFkZHIgPSAodnVfbG9uZyopKGluZm8tPnN0YXJ0W3NlY3RdKTsKLQkJCWFkZHJbMF0gPSAweDAwMzAwMDMwOwotCQkJbF9zZWN0ID0gc2VjdDsKLQkJfQotCX0KLQotCS8qIHJlLWVuYWJsZSBpbnRlcnJ1cHRzIGlmIG5lY2Vzc2FyeSAqLwotCWlmIChmbGFnKQotCQllbmFibGVfaW50ZXJydXB0cygpOwotCi0JLyogd2FpdCBhdCBsZWFzdCA4MHVzIC0gbGV0J3Mgd2FpdCAxIG1zICovCi0JdWRlbGF5ICgxMDAwKTsKLQotCS8qCi0JICogV2Ugd2FpdCBmb3IgdGhlIGxhc3QgdHJpZ2dlcmVkIHNlY3RvcgotCSAqLwotCWlmIChsX3NlY3QgPCAwKQotCQlnb3RvIERPTkU7Ci0KLQlzdGFydCA9IGdldF90aW1lciAoMCk7Ci0JbGFzdCAgPSBzdGFydDsKLQlhZGRyID0gKHZ1X2xvbmcqKShpbmZvLT5zdGFydFtsX3NlY3RdKTsKLQl3aGlsZSAoKGFkZHJbMF0gJiAweDAwODAwMDgwKSAhPSAweDAwODAwMDgwKSB7Ci0JCWlmICgobm93ID0gZ2V0X3RpbWVyKHN0YXJ0KSkgPiBDT05GSUdfU1lTX0ZMQVNIX0VSQVNFX1RPVVQpIHsKLQkJCXByaW50ZiAoIlRpbWVvdXRcbiIpOwotCQkJcmV0dXJuIDE7Ci0JCX0KLQkJLyogc2hvdyB0aGF0IHdlJ3JlIHdhaXRpbmcgKi8KLQkJaWYgKChub3cgLSBsYXN0KSA+IDEwMDAwMCkgewkvKiBldmVyeSBzZWNvbmQgKi8KLQkJCXB1dGMgKCcuJyk7Ci0JCQlsYXN0ID0gbm93OwotCQl9Ci0JfQotCi1ET05FOgotCS8qIHJlc2V0IHRvIHJlYWQgbW9kZSAqLwotCWFkZHIgPSAodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKWluZm8tPnN0YXJ0WzBdOwotCWFkZHJbMF0gPSAweDAwRjAwMEYwOwkvKiByZXNldCBiYW5rICovCi0KLQlwcmludGYgKCIgZG9uZVxuIik7Ci0JcmV0dXJuIDA7Ci19Ci0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIENvcHkgbWVtb3J5IHRvIGZsYXNoLCByZXR1cm5zOgotICogMCAtIE9LCi0gKiAxIC0gd3JpdGUgdGltZW91dAotICogMiAtIEZsYXNoIG5vdCBlcmFzZWQKLSAqLwotCi1pbnQgd3JpdGVfYnVmZiAoZmxhc2hfaW5mb190ICppbmZvLCB1Y2hhciAqc3JjLCB1bG9uZyBhZGRyLCB1bG9uZyBjbnQpCi17Ci0JdWxvbmcgY3AsIHdwLCBkYXRhOwotCWludCBpLCBsLCByYzsKLQotCXdwID0gKGFkZHIgJiB+Myk7CS8qIGdldCBsb3dlciB3b3JkIGFsaWduZWQgYWRkcmVzcyAqLwotCi0JLyoKLQkgKiBoYW5kbGUgdW5hbGlnbmVkIHN0YXJ0IGJ5dGVzCi0JICovCi0JaWYgKChsID0gYWRkciAtIHdwKSAhPSAwKSB7Ci0JCWRhdGEgPSAwOwotCQlmb3IgKGk9MCwgY3A9d3A7IGk8bDsgKytpLCArK2NwKSB7Ci0JCQlkYXRhID0gKGRhdGEgPDwgOCkgfCAoKih1Y2hhciAqKWNwKTsKLQkJfQotCQlmb3IgKDsgaTw0ICYmIGNudD4wOyArK2kpIHsKLQkJCWRhdGEgPSAoZGF0YSA8PCA4KSB8ICpzcmMrKzsKLQkJCS0tY250OwotCQkJKytjcDsKLQkJfQotCQlmb3IgKDsgY250PT0wICYmIGk8NDsgKytpLCArK2NwKSB7Ci0JCQlkYXRhID0gKGRhdGEgPDwgOCkgfCAoKih1Y2hhciAqKWNwKTsKLQkJfQotCi0JCWlmICgocmMgPSB3cml0ZV93b3JkKGluZm8sIHdwLCBTV0FQKGRhdGEpKSkgIT0gMCkgewotCQkJcmV0dXJuIChyYyk7Ci0JCX0KLQkJd3AgKz0gNDsKLQl9Ci0KLQkvKgotCSAqIGhhbmRsZSB3b3JkIGFsaWduZWQgcGFydAotCSAqLwotCXdoaWxlIChjbnQgPj0gNCkgewotCQlkYXRhID0gMDsKLQkJZm9yIChpPTA7IGk8NDsgKytpKSB7Ci0JCQlkYXRhID0gKGRhdGEgPDwgOCkgfCAqc3JjKys7Ci0JCX0KLQkJaWYgKChyYyA9IHdyaXRlX3dvcmQoaW5mbywgd3AsIFNXQVAoZGF0YSkpKSAhPSAwKSB7Ci0JCQlyZXR1cm4gKHJjKTsKLQkJfQotCQl3cCAgKz0gNDsKLQkJY250IC09IDQ7Ci0JfQotCi0JaWYgKGNudCA9PSAwKSB7Ci0JCXJldHVybiAoMCk7Ci0JfQotCi0JLyoKLQkgKiBoYW5kbGUgdW5hbGlnbmVkIHRhaWwgYnl0ZXMKLQkgKi8KLQlkYXRhID0gMDsKLQlmb3IgKGk9MCwgY3A9d3A7IGk8NCAmJiBjbnQ+MDsgKytpLCArK2NwKSB7Ci0JCWRhdGEgPSAoZGF0YSA8PCA4KSB8ICpzcmMrKzsKLQkJLS1jbnQ7Ci0JfQotCWZvciAoOyBpPDQ7ICsraSwgKytjcCkgewotCQlkYXRhID0gKGRhdGEgPDwgOCkgfCAoKih1Y2hhciAqKWNwKTsKLQl9Ci0KLQlyZXR1cm4gKHdyaXRlX3dvcmQoaW5mbywgd3AsIFNXQVAoZGF0YSkpKTsKLX0KLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogV3JpdGUgYSB3b3JkIHRvIEZsYXNoLCByZXR1cm5zOgotICogMCAtIE9LCi0gKiAxIC0gd3JpdGUgdGltZW91dAotICogMiAtIEZsYXNoIG5vdCBlcmFzZWQKLSAqLwotc3RhdGljIGludCB3cml0ZV93b3JkIChmbGFzaF9pbmZvX3QgKmluZm8sIHVsb25nIGRlc3QsIHVsb25nIGRhdGEpCi17Ci0JdnVfbG9uZyAqYWRkciA9ICh2dV9sb25nKikoaW5mby0+c3RhcnRbMF0pOwotCXVsb25nIHN0YXJ0OwotCWludCBmbGFnOwotCi0JLyogQ2hlY2sgaWYgRmxhc2ggaXMgKHN1ZmZpY2llbnRseSkgZXJhc2VkICovCi0JaWYgKCgqKCh2dV9sb25nICopZGVzdCkgJiBkYXRhKSAhPSBkYXRhKSB7Ci0JCXJldHVybiAoMik7Ci0JfQotCi0JLyogRGlzYWJsZSBpbnRlcnJ1cHRzIHdoaWNoIG1pZ2h0IGNhdXNlIGEgdGltZW91dCBoZXJlICovCi0JZmxhZyA9IGRpc2FibGVfaW50ZXJydXB0cygpOwotCi0JYWRkclsweDA1NTVdID0gMHgwMEFBMDBBQTsKLQlhZGRyWzB4MDJBQV0gPSAweDAwNTUwMDU1OwotCWFkZHJbMHgwNTU1XSA9IDB4MDBBMDAwQTA7Ci0KLQkqKCh2dV9sb25nICopZGVzdCkgPSBkYXRhOwotCi0JLyogcmUtZW5hYmxlIGludGVycnVwdHMgaWYgbmVjZXNzYXJ5ICovCi0JaWYgKGZsYWcpCi0JCWVuYWJsZV9pbnRlcnJ1cHRzKCk7Ci0KLQkvKiBkYXRhIHBvbGxpbmcgZm9yIEQ3ICovCi0Jc3RhcnQgPSBnZXRfdGltZXIgKDApOwotCXdoaWxlICgoKigodnVfbG9uZyAqKWRlc3QpICYgMHgwMDgwMDA4MCkgIT0gKGRhdGEgJiAweDAwODAwMDgwKSkgewotCQlpZiAoZ2V0X3RpbWVyKHN0YXJ0KSA+IENPTkZJR19TWVNfRkxBU0hfV1JJVEVfVE9VVCkgewotCQkJcmV0dXJuICgxKTsKLQkJfQotCX0KLQlyZXR1cm4gKDApOwotfQpkaWZmIC0tZ2l0IGEvYm9hcmQveHNlbmdpbmUvbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQveHNlbmdpbmUvbG93bGV2ZWxfaW5pdC5TCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDk0YWI2Li4wMDAwMDAwCi0tLSBhL2JvYXJkL3hzZW5naW5lL2xvd2xldmVsX2luaXQuUworKysgL2Rldi9udWxsCkBAIC0xLDIyMSArMCwwIEBACi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0jaW5jbHVkZSA8dmVyc2lvbi5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+Ci0KLURSQU1fU0laRTogIC5sb25nICAgQ09ORklHX1NZU19EUkFNX1NJWkUKLQotLmdsb2JsIGxvd2xldmVsX2luaXQKLWxvd2xldmVsX2luaXQ6Ci0KLSAgIG1vdiAgICAgIHIxMCwgbHIKLQotLyogLS0tLSBHUElPIElOSVRJQUxJU0FUSU9OIC0tLS0gKi8KLS8qIFNldCB1cCBHUElPIHBpbnMgZmlyc3QgKDMgZ3JvdXBzIFszMTowXSBbNjM6MzJdIFs4MDo2NF0pICovCi0KLSAgIC8qIEdlbmVyYWwgcHVycG9zZSBzZXQgcmVnaXN0ZXJzICovCi0gICBsZHIgICAgICByMCwgICA9R1BTUjAKLSAgIGxkciAgICAgIHIxLCAgID1DT05GSUdfU1lTX0dQU1IwX1ZBTAotICAgc3RyICAgICAgcjEsICAgW3IwXQotICAgbGRyICAgICAgcjAsICAgPUdQU1IxCi0gICBsZHIgICAgICByMSwgICA9Q09ORklHX1NZU19HUFNSMV9WQUwKLSAgIHN0ciAgICAgIHIxLCAgIFtyMF0KLSAgIGxkciAgICAgIHIwLCAgID1HUFNSMgotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BTUjJfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIC8qIEdlbmVyYWwgcHVycG9zZSBjbGVhciByZWdpc3RlcnMgKi8KLSAgIGxkciAgICAgIHIwLCAgID1HUENSMAotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BDUjBfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0gICBsZHIgICAgICByMCwgICA9R1BDUjEKLSAgIGxkciAgICAgIHIxLCAgID1DT05GSUdfU1lTX0dQQ1IxX1ZBTAotICAgc3RyICAgICAgcjEsICAgW3IwXQotICAgbGRyICAgICAgcjAsICAgPUdQQ1IyCi0gICBsZHIgICAgICByMSwgICA9Q09ORklHX1NZU19HUENSMl9WQUwKLSAgIHN0ciAgICAgIHIxLCAgIFtyMF0KLQotICAgLyogR2VuZXJhbCByaXNpbmcgZWRnZSByZWdpc3RlcnMgKi8KLSAgIGxkciAgICAgIHIwLCAgID1HUkVSMAotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1JFUjBfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0gICBsZHIgICAgICByMCwgICA9R1JFUjEKLSAgIGxkciAgICAgIHIxLCAgID1DT05GSUdfU1lTX0dSRVIxX1ZBTAotICAgc3RyICAgICAgcjEsICAgW3IwXQotICAgbGRyICAgICAgcjAsICAgPUdSRVIyCi0gICBsZHIgICAgICByMSwgICA9Q09ORklHX1NZU19HUkVSMl9WQUwKLSAgIHN0ciAgICAgIHIxLCAgIFtyMF0KLQotICAgLyogR2VuZXJhbCBmYWxsaW5nIGVkZ2UgcmVnaXN0ZXJzICovCi0gICBsZHIgICAgICByMCwgICA9R0ZFUjAKLSAgIGxkciAgICAgIHIxLCAgID1DT05GSUdfU1lTX0dGRVIwX1ZBTAotICAgc3RyICAgICAgcjEsICAgW3IwXQotICAgbGRyICAgICAgcjAsICAgPUdGRVIxCi0gICBsZHIgICAgICByMSwgICA9Q09ORklHX1NZU19HRkVSMV9WQUwKLSAgIHN0ciAgICAgIHIxLCAgIFtyMF0KLSAgIGxkciAgICAgIHIwLCAgID1HRkVSMgotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR0ZFUjJfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIC8qIEdlbmVyYWwgZWRnZSBkZXRlY3QgcmVnaXN0ZXJzICovCi0gICBsZHIgICAgICByMCwgICA9R1BEUjAKLSAgIGxkciAgICAgIHIxLCAgID1DT05GSUdfU1lTX0dQRFIwX1ZBTAotICAgc3RyICAgICAgcjEsICAgW3IwXQotICAgbGRyICAgICAgcjAsICAgPUdQRFIxCi0gICBsZHIgICAgICByMSwgICA9Q09ORklHX1NZU19HUERSMV9WQUwKLSAgIHN0ciAgICAgIHIxLCAgIFtyMF0KLSAgIGxkciAgICAgIHIwLCAgID1HUERSMgotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BEUjJfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIC8qIEdlbmVyYWwgYWx0ZXJuYXRlIGZ1bmN0aW9uIHJlZ2lzdGVycyAqLwotICAgbGRyICAgICAgcjAsICAgPUdBRlIwX0wJCS8qIFswOjE1XSAqLwotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR0FGUjBfTF9WQUwKLSAgIHN0ciAgICAgIHIxLCAgIFtyMF0KLSAgIGxkciAgICAgIHIwLCAgID1HQUZSMF9VCQkvKiBbMzE6MTZdICovCi0gICBsZHIgICAgICByMSwgICA9Q09ORklHX1NZU19HQUZSMF9VX1ZBTAotICAgc3RyICAgICAgcjEsICAgW3IwXQotICAgbGRyICAgICAgcjAsICAgPUdBRlIxX0wJCS8qIFs0NzozMl0gKi8KLSAgIGxkciAgICAgIHIxLCAgID1DT05GSUdfU1lTX0dBRlIxX0xfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0gICBsZHIgICAgICByMCwgICA9R0FGUjFfVQkJLyogWzYzOjQ4XSAqLwotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR0FGUjFfVV9WQUwKLSAgIHN0ciAgICAgIHIxLCAgIFtyMF0KLSAgIGxkciAgICAgIHIwLCAgID1HQUZSMl9MCQkvKiBbNzk6NjRdICovCi0gICBsZHIgICAgICByMSwgICA9Q09ORklHX1NZU19HQUZSMl9MX1ZBTAotICAgc3RyICAgICAgcjEsICAgW3IwXQotICAgbGRyICAgICAgcjAsICAgPUdBRlIyX1UJCS8qIFs4MF0gKi8KLSAgIGxkciAgICAgIHIxLCAgID1DT05GSUdfU1lTX0dBRlIyX1VfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIC8qIEdlbmVyYWwgcHVycG9zZSBkaXJlY3Rpb24gcmVnaXN0ZXJzICovCi0gICBsZHIgICAgICByMCwgICA9R1BEUjAKLSAgIGxkciAgICAgIHIxLCAgID1DT05GSUdfU1lTX0dQRFIwX1ZBTAotICAgc3RyICAgICAgcjEsICAgW3IwXQotICAgbGRyICAgICAgcjAsICAgPUdQRFIxCi0gICBsZHIgICAgICByMSwgICA9Q09ORklHX1NZU19HUERSMV9WQUwKLSAgIHN0ciAgICAgIHIxLCAgIFtyMF0KLSAgIGxkciAgICAgIHIwLCAgID1HUERSMgotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfR1BEUjJfVkFMCi0gICBzdHIgICAgICByMSwgICBbcjBdCi0KLSAgIC8qIFBvd2VyIG1hbmFnZXIgc2xlZXAgc3RhdHVzICovCi0gICBsZHIgICAgICByMCwgICA9UFNTUgotICAgbGRyICAgICAgcjEsICAgPUNPTkZJR19TWVNfUFNTUl9WQUwKLSAgIHN0ciAgICAgIHIxLCAgIFtyMF0KLQotLyogLS0tLSBNRU1PUlkgSU5JVElBTElTQVRJT04gLS0tLSAqLwotLyogSW5pdGlhbGl6ZSBNZW1vcnkgQ29udHJvbGxlciwgc2VlIFBYQTI1MCBPcGVyYXRpbmcgU3lzdGVtIERldmVsb3BlcidzIEd1aWRlICovCi0vKiBwYXVzZSBmb3IgMjAwIHVTZWNzLSBhbGxvdyBpbnRlcm5hbCBjbG9ja3MgdG8gc2V0dGxlICovCi0gICBsZHIgcjMsID1PU0NSCS8qIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvICovCi0gICBtb3YgcjIsICMwCi0gICBzdHIgcjIsIFtyM10KLSAgIGxkciByNCwgPTB4MzAwCS8qIHJlYWxseSAweDJFMSBpcyBhYm91dCAyMDB1c2VjLCBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICovCi0xOgotICAgbGRyIHIyLCBbcjNdCi0gICBjbXAgcjQsIHIyCi0gICBiZ3QgMWIKLQotbWVtX2luaXQ6Ci0vKiBnZXQgbWVtb3J5IGNvbnRyb2xsZXIgYmFzZSBhZGRyZXNzICovCi0gICBsZHIgICAgIHIxLCAgPU1FTUNfQkFTRQotCi0vKiAtLS0tIEZMQVNIIElOSVRJQUxJU0FUSU9OIC0tLS0gKi8KLS8qIFdyaXRlIE1TQzAgYW5kIHJlYWQgYmFjayB0byBlbnN1cmUgZGF0YSBjaGFuZ2UgaXMgYWNjZXB0ZWQgYnkgY3B1ICovCi0gICBsZHIgICAgIHIyLCAgID1DT05GSUdfU1lTX01TQzBfVkFMCi0gICBzdHIgICAgIHIyLCAgIFtyMSwgI01TQzBfT0ZGU0VUXQotICAgbGRyICAgICByMiwgICBbcjEsICNNU0MwX09GRlNFVF0KLQotLyogLS0tLSBTRFJBTSBJTklUSUFMSVNBVElPTiAtLS0tICovCi0vKiBnZXQgdGhlIE1EUkVGUiBzZXR0aW5ncyAqLwotICAgbGRyICAgICByMiwgID1DT05GSUdfU1lTX01EUkVGUl9WQUwKLSAgIHN0ciAgICAgcjIsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0vKiBmZXRjaCBwbGF0Zm9ybSB2YWx1ZSBvZiBNRENORkcgKi8KLSAgIGxkciAgICAgcjIsICA9Q09ORklHX1NZU19NRENORkdfVkFMCi0KLS8qIGRpc2FibGUgYWxsIHNkcmFtIGJhbmtzICovCi0gICBiaWMgICAgIHIyLCAgcjIsICAjKE1EQ05GR19ERTAgfCBNRENORkdfREUxKQotICAgYmljICAgICByMiwgIHIyLCAgIyhNRENORkdfREUyIHwgTURDTkZHX0RFMykKLQotLyogd3JpdGUgaW5pdGlhbCB2YWx1ZSBvZiBNRENORkcsIHcvbyBlbmFibGluZyBzZHJhbSBiYW5rcyAqLwotICAgc3RyICAgICByMiwgIFtyMSwgI01EQ05GR19PRkZTRVRdCi0KLS8qIHBhdXNlIGZvciAyMDAgdVNlY3MgKi8KLSAgIGxkciByMywgPU9TQ1IJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KLSAgIG1vdiByMiwgIzAKLSAgIHN0ciByMiwgW3IzXQotICAgbGRyIHI0LCA9MHgzMDAJLyogYWJvdXQgMjAwIHVzZWMgKi8KLTE6Ci0gICBsZHIgcjIsIFtyM10KLSAgIGNtcCByNCwgcjIKLSAgIGJndCAxYgotCi0vKiBBY2Nlc3MgbWVtb3J5ICpub3QgeWV0IGVuYWJsZWQqIGZvciBDQlIgcmVmcmVzaCBjeWNsZXMgKDgpICovCi0vKiBDQlIgaXMgZ2VuZXJhdGVkIGZvciBhbGwgYmFua3MgKi8KLQotICAgbGRyICAgICByMiwgPUNPTkZJR19TWVNfRFJBTV9CQVNFCi0gICBzdHIgICAgIHIyLCBbcjJdCi0gICBzdHIgICAgIHIyLCBbcjJdCi0gICBzdHIgICAgIHIyLCBbcjJdCi0gICBzdHIgICAgIHIyLCBbcjJdCi0gICBzdHIgICAgIHIyLCBbcjJdCi0gICBzdHIgICAgIHIyLCBbcjJdCi0gICBzdHIgICAgIHIyLCBbcjJdCi0gICBzdHIgICAgIHIyLCBbcjJdCi0KLS8qIGdldCBtZW1vcnkgY29udHJvbGxlciBiYXNlIGFkZHJlc3MgKi8KLSAgIGxkciAgICAgcjIsICA9TUVNQ19CQVNFCi0KLS8qIEVuYWJsZSBTRFJBTSBiYW5rIDAgaW4gTURDTkZHIHJlZ2lzdGVyICovCi0gICBsZHIgICAgIHIyLCAgW3IxLCAjTURDTkZHX09GRlNFVF0KLSAgIG9yciAgICAgcjIsICByMiwgICNNRENORkdfREUwCi0gICBzdHIgICAgIHIyLCAgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotLyogd3JpdGUgTURNUlMgdG8gdHJpZ2dlciBhbiBNU1IgY29tbWFuZCB0byBhbGwgZW5hYmxlZCBTRFJBTSBiYW5rcyAqLwotICAgbGRyICAgICByMiwgID1DT05GSUdfU1lTX01ETVJTX1ZBTAotICAgc3RyICAgICByMiwgIFtyMSwgI01ETVJTX09GRlNFVF0KLQotLyogLS0tLSBJTlRFUlJVUFQgSU5JVElBTElTQVRJT04gLS0tLSAqLwotLyogRGlzYWJsZSAobWFzaykgYWxsIGludGVycnVwdHMgYXQgdGhlIGludGVycnVwdCBjb250cm9sbGVyICovCi0vKiBjbGVhciB0aGUgaW50ZXJydXB0IGxldmVsIHJlZ2lzdGVyICh1c2UgSVJRLCBub3QgRklRKSAqLwotICAgbW92ICAgICByMSwgIzAKLSAgIGxkciAgICAgcjIsICA9SUNMUgotICAgc3RyICAgICByMSwgIFtyMl0KLQotLyogU2V0IGludGVycnVwdCBtYXNrIHJlZ2lzdGVyICovCi0gICBsZHIgICAgIHIxLCAgPUNPTkZJR19TWVNfSUNNUl9WQUwKLSAgIGxkciAgICAgcjIsICA9SUNNUgotICAgc3RyICAgICByMSwgIFtyMl0KLQotLyogLS0tLSBDTE9DSyBJTklUSUFMSVNBVElPTiAtLS0tICovCi0vKiBEaXNhYmxlIHRoZSBwZXJpcGhlcmFsIGNsb2NrcywgYW5kIHNldCB0aGUgY29yZSBjbG9jayAqLwotCi0vKiBUdXJuIE9mZiBBTEwgb24tY2hpcCBwZXJpcGhlcmFsIGNsb2NrcyBmb3IgcmUtY29uZmlndXJhdGlvbiAqLwotICAgbGRyICAgICByMSwgID1DS0VOCi0gICBtb3YgICAgIHIyLCAgIzAKLSAgIHN0ciAgICAgcjIsICBbcjFdCi0KLS8qIHNldCBjb3JlIGNsb2NrcyAqLwotICAgbGRyICAgICByMiwgID1DT05GSUdfU1lTX0NDQ1JfVkFMCi0gICBsZHIgICAgIHIxLCAgPUNDQ1IKLSAgIHN0ciAgICAgcjIsICBbcjFdCi0KLSNpZmRlZiBFTkFCTEUzMktIWgotLyogZW5hYmxlIHRoZSAzMktoeiBvc2NpbGxhdG9yIGZvciBSVEMgYW5kIFBvd2VyTWFuYWdlciAqLwotICAgbGRyICAgICByMSwgID1PU0NDCi0gICBtb3YgICAgIHIyLCAgI09TQ0NfT09OCi0gICBzdHIgICAgIHIyLCAgW3IxXQotCi0vKiBOT1RFOiAgc3BpbiBoZXJlIHVudGlsIE9TQ0MuT09LIGdldCBzZXQsIG1lYW5pbmcgdGhlIFBMTCBoYXMgc2V0dGxlZC4gKi8KLTYwOgotICAgbGRyICAgICByMiwgW3IxXQotICAgYW5kcyAgICByMiwgcjIsICMxCi0gICBiZXEgICAgIDYwYgotI2VuZGlmCi0KLS8qIFR1cm4gb24gbmVlZGVkIGNsb2NrcyAqLwotICAgbGRyICAgICByMSwgID1DS0VOCi0gICBsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfQ0tFTl9WQUwKLSAgIHN0ciAgICAgcjIsICBbcjFdCi0KLSAgIG1vdiAgIHBjLCByMTAKZGlmZiAtLWdpdCBhL2JvYXJkL3hzZW5naW5lL3hzZW5naW5lLmMgYi9ib2FyZC94c2VuZ2luZS94c2VuZ2luZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDY0ZmQ0Li4wMDAwMDAwCi0tLSBhL2JvYXJkL3hzZW5naW5lL3hzZW5naW5lLmMKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBLeWxlIEhhcnJpcywgTmV4dXMgVGVjaG5vbG9naWVzLCBJbmMuIGtoYXJyaXNAbmV4dXMtdGVjaC5uZXQKLSAqCi0gKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIFN5c2dvIFJlYWwtVGltZSBTb2x1dGlvbnMsIEdtYkggPHd3dy5lbGlub3MuY29tPgotICogTWFyaXVzIEdyb2VnZXIgPG1ncm9lZ2VyQHN5c2dvLmRlPgotICoKLSAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCi0gKiBwcm9qZWN0LgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCi0gKiBNQSAwMjExMS0xMzA3IFVTQQotICovCi0KLSNpbmNsdWRlIDxjb21tb24uaD4KLSNpbmNsdWRlIDxuZXRkZXYuaD4KLQotREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7Ci0KLS8qCi0gKiBNaXNjZWxhbmVvdXMgcGxhdGZvcm0gZGVwZW5kZW50IGluaXRpYWxpc2F0aW9ucwotICovCi0KLWludCBib2FyZF9pbml0ICh2b2lkKQotewotCS8qIG1lbW9yeSBhbmQgY3B1LXNwZWVkIGFyZSBzZXR1cCBiZWZvcmUgcmVsb2NhdGlvbiAqLwotCS8qIHNvIHdlIGRvIF9ub3RoaW5nXyBoZXJlICovCi0KLQkvKiBhcmNoIG51bWJlciAqLwotCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSBNQUNIX1RZUEVfWFNFTkdJTkU7Ci0KLQkvKiBhZHJlc3Mgb2YgYm9vdCBwYXJhbWV0ZXJzICovCi0JZ2QtPmJkLT5iaV9ib290X3BhcmFtcyA9IDB4YTAwMDAxMDA7Ci0KLQlyZXR1cm4gMDsKLX0KLQotaW50IGJvYXJkX2xhdGVfaW5pdCAodm9pZCkKLXsKLQlzZXRlbnYgKCJzdGRvdXQiLCAic2VyaWFsIik7Ci0Jc2V0ZW52ICgic3RkZXJyIiwgInNlcmlhbCIpOwotCXJldHVybiAwOwotfQotCi1pbnQgZHJhbV9pbml0ICh2b2lkKQotewotCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKLQlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOwotCi0JcmV0dXJuIDA7Ci19Ci0KLSNpZmRlZiBDT05GSUdfQ01EX05FVAotaW50IGJvYXJkX2V0aF9pbml0KGJkX3QgKmJpcykKLXsKLQlpbnQgcmMgPSAwOwotI2lmZGVmIENPTkZJR19TTUM5MTExMQotCXJjID0gc21jOTExMTFfaW5pdGlhbGl6ZSgwLCBDT05GSUdfU01DOTExMTFfQkFTRSk7Ci0jZW5kaWYKLQlyZXR1cm4gcmM7Ci19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkcy5jZmcgYi9ib2FyZHMuY2ZnCmluZGV4IDBmMzI5MmYuLjZjMmE2NjcgMTAwNjQ0Ci0tLSBhL2JvYXJkcy5jZmcKKysrIGIvYm9hcmRzLmNmZwpAQCAtNjUsNyArNjUsNiBAQAogY2VyZjI1MAkJYXJtCXB4YQogY3JhZGxlCQlhcm0JcHhhCiBjc2IyMjYJCWFybQlweGEKLWRlbHRhCQlhcm0JcHhhCiBpbm5va29tCQlhcm0JcHhhCiBsdWJib2NrCQlhcm0JcHhhCiBwYWxtbGQJCWFybQlweGEKQEAgLTQwMiw4ICs0MDEsNiBAQAogbHBkN2E0MDQJYXJtCWxoN2E0MHgJCWxwZDdhNDB4CiBjb2xpYnJpX3B4YTI3MAlhcm0JcHhhCiBweGEyNTVfaWRwCWFybQlweGEKLXdlcGVwMjUwCWFybQlweGEKLXhzZW5naW5lCWFybQlweGEKIHp5bG9uaXRlCWFybQlweGEKIGF0bmd3MTAwCWF2cjMyCWF0MzJhcAkJLQkJYXRtZWwJCWF0MzJhcDcwMHgKIGF0c3RrMTAwMglhdnIzMglhdDMyYXAJCWF0c3RrMTAwMAlhdG1lbAkJYXQzMmFwNzAweApAQCAtNDE2LDYgKzQxMyw3IEBACiBiZjUxOGYtZXpicmQJYmxhY2tmaW4JYmxhY2tmaW4KIGJmNTI2LWV6YnJkCWJsYWNrZmluCWJsYWNrZmluCiBiZjUyNy1lemtpdAlibGFja2ZpbglibGFja2ZpbgorYmY1MjctZXpraXQtdjIJYmxhY2tmaW4JYmxhY2tmaW4JYmY1MjctZXpraXQJLQktCWJmNTI3LWV6a2l0OkJGNTI3X0VaS0lUX1JFVl8yXzEKIGJmNTI3LXNkcAlibGFja2ZpbglibGFja2ZpbgogYmY1MzMtZXpraXQJYmxhY2tmaW4JYmxhY2tmaW4KIGJmNTMzLXN0YW1wCWJsYWNrZmluCWJsYWNrZmluCkBAIC01MjcsNyArNTI1LDYgQEAKIFBRMkZBRFMtVlIJcG93ZXJwYwltcGM4MjYwCQltcGM4MjYwYWRzCWZyZWVzY2FsZQktCU1QQzgyNjBBRFM6QURTVFlQRT1DT05GSUdfU1lTX1BRMkZBRFMsODI2MF9DTEtJTj02NjAwMDAwMAogUFEyRkFEUy1aVQlwb3dlcnBjCW1wYzgyNjAJCW1wYzgyNjBhZHMJZnJlZXNjYWxlCS0JTVBDODI2MEFEUzpBRFNUWVBFPUNPTkZJR19TWVNfUFEyRkFEUwogUFEyRkFEU19sb3dib290CXBvd2VycGMJbXBjODI2MAkJbXBjODI2MGFkcwlmcmVlc2NhbGUJLQlNUEM4MjYwQURTOkFEU1RZUEU9Q09ORklHX1NZU19QUTJGQURTLFNZU19URVhUX0JBU0U9MHhGRjgwMDAwMAotVm9WUE4tR1dfMTAwTUh6CXBvd2VycGMJbXBjODI2MAkJdm92cG4tZ3cJZnVua3dlcmsJLQlWb1ZQTi1HVzpDTEtJTl8xMDBNSHoKIFZvVlBOLUdXXzY2TUh6CXBvd2VycGMJbXBjODI2MAkJdm92cG4tZ3cJZnVua3dlcmsJLQlWb1ZQTi1HVzpDTEtJTl82Nk1IegogTVBDODMwOFJEQglwb3dlcnBjCW1wYzgzeHgJCW1wYzgzMDhyZGIJZnJlZXNjYWxlCiBNUEM4MzIzRVJEQglwb3dlcnBjCW1wYzgzeHgJCW1wYzgzMjNlcmRiCWZyZWVzY2FsZQpAQCAtNTU2LDggKzU1Myw5IEBACiBNUEM4NTQ0RFMJcG93ZXJwYwltcGM4NXh4CQltcGM4NTQ0ZHMJZnJlZXNjYWxlCiBNUEM4NTYwQURTCXBvd2VycGMJbXBjODV4eAkJbXBjODU2MGFkcwlmcmVlc2NhbGUKIE1QQzg1NjhNRFMJcG93ZXJwYwltcGM4NXh4CQltcGM4NTY4bWRzCWZyZWVzY2FsZQotWFBFRElURTUyMDAJcG93ZXJwYwltcGM4NXh4CQl4cGVkaXRlNTIwMAl4ZXMKLVhQRURJVEU1MzcwCXBvd2VycGMJbXBjODV4eAkJeHBlZGl0ZTUzNzAJeGVzCit4cGVkaXRlNTIweAlwb3dlcnBjCW1wYzg1eHgJCS0JCXhlcworeHBlZGl0ZTUzN3gJcG93ZXJwYwltcGM4NXh4CQktCQl4ZXMKK3hwZWRpdGU1NTB4CXBvd2VycGMJbXBjODV4eAkJLQkJeGVzCiBzYmM4NTQwXzMzCXBvd2VycGMJbXBjODV4eAkJc2JjODU2MAkJLQkJLQlTQkM4NTQwCiBzYmM4NTQwXzY2CXBvd2VycGMJbXBjODV4eAkJc2JjODU2MAkJLQkJLQlTQkM4NTQwCiBzYmM4NTQ4X1BDSV8zMwlwb3dlcnBjCW1wYzg1eHgJCXNiYzg1NDgJCS0JCS0Jc2JjODU0ODpQQ0ksMzMKQEAgLTU5Nyw3ICs1OTUsNyBAQAogUDIwMjBSREJfU0RDQVJECXBvd2VycGMJbXBjODV4eAkJcDFfcDJfcmRiCWZyZWVzY2FsZQktCVAxX1AyX1JEQjpQMjAyMCxTRENBUkQKIHNiYzg2NDFkCXBvd2VycGMJbXBjODZ4eAogTVBDODYxMEhQQ0QJcG93ZXJwYwltcGM4Nnh4CQltcGM4NjEwaHBjZAlmcmVlc2NhbGUKLVhQRURJVEU1MTcwCXBvd2VycGMJbXBjODZ4eAkJeHBlZGl0ZTUxNzAJeGVzCit4cGVkaXRlNTE3eAlwb3dlcnBjCW1wYzg2eHgJCS0JCXhlcwogTVBDODY0MUhQQ04JcG93ZXJwYwltcGM4Nnh4CQltcGM4NjQxaHBjbglmcmVlc2NhbGUJLQlNUEM4NjQxSFBDTgogY29nZW50X21wYzh4eAlwb3dlcnBjCW1wYzh4eAkJY29nZW50CiBFU1RFRU0xOTJFCXBvd2VycGMJbXBjOHh4CQllc3RlZW0xOTJlCkBAIC02NDQsMTEgKzY0MiwxMyBAQAogQ1BDSTQwNURUCXBvd2VycGMJcHBjNHh4CQljcGNpNDA1CQllc2QKIGRsdmlzaW9uCXBvd2VycGMJcHBjNHh4CQktCQlnZHN5cwogZ2RwcGM0NDBldHgJcG93ZXJwYwlwcGM0eHgJCS0JCWdkc3lzCitpbwkJcG93ZXJwYwlwcGM0eHgJCTQwNWVwCQlnZHN5cworaW9jb24JCXBvd2VycGMJcHBjNHh4CQk0MDVlcAkJZ2RzeXMKIENQQ0lJU0VSNAlwb3dlcnBjCXBwYzR4eAkJY3BjaWlzZXI0CWVzZAogREFTQV9TSU0JcG93ZXJwYwlwcGM0eHgJCWRhc2Ffc2ltCWVzZAogUE1DNDA1REUJcG93ZXJwYwlwcGM0eHgJCXBtYzQwNWRlCWVzZAogTUVUUk9CT1gJcG93ZXJwYwlwcGM0eHgJCW1ldHJvYm94CXNhbmRidXJzdAotWFBFRElURTEwMDAJcG93ZXJwYwlwcGM0eHgJCXhwZWRpdGUxMDAwCXhlcworeHBlZGl0ZTEwMDAJcG93ZXJwYwlwcGM0eHgJCS0JCXhlcwoga29yYXRfcGVybQlwb3dlcnBjCXBwYzR4eAkJa29yYXQJCS0JCS0Ja29yYXQ6S09SQVRfUEVSTUFORU5UCiBoYWxlYWthbGEJcG93ZXJwYwlwcGM0eHgJCWtpbGF1ZWEJCWFtY2MJCS0Ja2lsYXVlYTpIQUxFQUtBTEEKIHN5Y2Ftb3JlCXBvd2VycGMJcHBjNHh4CQl3YWxudXQJCWFtY2MJCS0Jd2FsbnV0CkBAIC03MzIsNSArNzMyLDE4IEBACiBkYXZpbmNpX3NjaG1vb2dpZSBhcm0JYXJtOTI2ZWpzCXNjaG1vb2dpZQlkYXZpbmNpCQlkYXZpbmNpCiBkYXZpbmNpX2RtMzU1bGVvcGFyZCBhcm0gYXJtOTI2ZWpzCWRtMzU1bGVvcGFyZAlkYXZpbmNpCQlkYXZpbmNpCiBiZjUyNy1hZDcxNjAtZXZhbCBibGFja2ZpbglibGFja2ZpbgorcnNrNzIwMwlzaAlzaDIJCXJzazcyMDMJCXJlbmVzYXMJCS0KK21wcjIJc2gJc2gzCQltcHIyCS0JLQorbXM3NzIwc2UJc2gJc2gzCW1zNzcyMHNlCS0JLQorTWlnb1JzaAlzaDQJTWlnb1IJcmVuZXNhcwktICAgCittczc3NTBzZQlzaAlzaDQJbXM3NzUwc2UJLQktICAgCittczc3MjJzZQlzaAlzaDQJbXM3NzIyc2UJLQktICAgCityMmRwbHVzCXNoCXNoNAlyMmRwbHVzCXJlbmVzYXMJLSAgIAorcjc3ODBtcAlzaAlzaDQJcjc3ODBtcAlyZW5lc2FzCS0gICAKK3NoNzc2M3JkcAlzaAlzaDQJc2g3NzYzcmRwCXJlbmVzYXMJLSAgIAorc2g3Nzg1bGNyCXNoCXNoNAlzaDc3ODVsY3IJcmVuZXNhcwktICAgCitzaDc3ODVsY3JfMzJiaXQJc2ggIHNoNAlzaDc3ODVsY3IJcmVuZXNhcwktCXNoNzc4NWxjcjpTSF8zMkJJVD0xCithcDMyNXJ4YQlzaAlzaDQJYXAzMjVyeGEJcmVuZXNhcwktICAgCitlc3B0CXNoCXNoNAllc3B0CS0JLQogIyBUYXJnZXQJQVJDSAlDUFUJCUJvYXJkIG5hbWUJVmVuZG9yCQlTb0MJCU9wdGlvbnMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9jb21tb24vY21kX2JkaW5mby5jIGIvY29tbW9uL2NtZF9iZGluZm8uYwppbmRleCAxMzI2YzhmLi41MWI3NWZmIDEwMDY0NAotLS0gYS9jb21tb24vY21kX2JkaW5mby5jCisrKyBiL2NvbW1vbi9jbWRfYmRpbmZvLmMKQEAgLTE5Miw3ICsxOTIsNyBAQAogCXByaW50ZigiQ09ORklHX1NZU19QUk9NX09GRlNFVCAgICAgICAgPSAweCVseCAoJWQpXG4iLCBDT05GSUdfU1lTX1BST01fT0ZGU0VULAogCSAgICAgICBDT05GSUdfU1lTX1BST01fU0laRSk7CiAJcHJpbnRmKCJDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICA9IDB4JWx4ICglZClcbiIsIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VULAotCSAgICAgICBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpOworCSAgICAgICBHRU5FUkFURURfR0JMX0RBVEFfU0laRSk7CiAKICNpZiBkZWZpbmVkKENPTkZJR19DTURfTkVUKQogCXByaW50X2V0aCgwKTsKZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfb25lbmFuZC5jIGIvY29tbW9uL2NtZF9vbmVuYW5kLmMKaW5kZXggODNkOTY3Yi4uZmU4NGMzYiAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9vbmVuYW5kLmMKKysrIGIvY29tbW9uL2NtZF9vbmVuYW5kLmMKQEAgLTUyNSw2ICs1MjUsMTIgQEAKIAlVX0JPT1RfQ01EX01LRU5UKG1hcmtiYWQsIENPTkZJR19TWVNfTUFYQVJHUywgMCwgZG9fb25lbmFuZF9tYXJrYmFkLCAiIiwgIiIpLAogfTsKIAorI2lmbmRlZiBDT05GSUdfUkVMT0NfRklYVVBfV09SS1MKK3ZvaWQgb25lbmFuZF9yZWxvYyh2b2lkKSB7CisJZml4dXBfY21kdGFibGUoY21kX29uZW5hbmRfc3ViLCBBUlJBWV9TSVpFKGNtZF9vbmVuYW5kX3N1YikpOworfQorI2VuZGlmCisKIHN0YXRpYyBpbnQgZG9fb25lbmFuZChjbWRfdGJsX3QgKiBjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICogY29uc3QgYXJndltdKQogewogCWNtZF90YmxfdCAqYzsKZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfcGNpLmMgYi9jb21tb24vY21kX3BjaS5jCmluZGV4IDRiZGUwNTkuLmNjZjVhZGEgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9jbWRfcGNpLmMKKysrIGIvY29tbW9uL2NtZF9wY2kuYwpAQCAtNDk3LDYgKzQ5NywxMCBAQAogCQlpZiAoKGJkZiA9IGdldF9wY2lfZGV2KGFyZ3ZbMl0pKSA9PSAtMSkKIAkJCXJldHVybiAxOwogCQlicmVhazsKKyNpZmRlZiBDT05GSUdfQ01EX1BDSV9FTlVNCisJY2FzZSAnZSc6CisJCWJyZWFrOworI2VuZGlmCiAJZGVmYXVsdDoJCS8qIHNjYW4gYnVzICovCiAJCXZhbHVlID0gMTsgLyogc2hvcnQgbGlzdGluZyAqLwogCQliZGYgPSAwOyAgIC8qIGJ1cyBudW1iZXIgICovCkBAIC01MTgsNiArNTIyLDExIEBACiAJCXJldHVybiAwOwogCWNhc2UgJ2QnOgkJLyogZGlzcGxheSAqLwogCQlyZXR1cm4gcGNpX2NmZ19kaXNwbGF5KGJkZiwgYWRkciwgc2l6ZSwgdmFsdWUpOworI2lmZGVmIENPTkZJR19DTURfUENJX0VOVU0KKwljYXNlICdlJzoKKwkJcGNpX2luaXQoKTsKKwkJcmV0dXJuIDA7CisjZW5kaWYKIAljYXNlICduJzoJCS8qIG5leHQgKi8KIAkJaWYgKGFyZ2MgPCA0KQogCQkJZ290byB1c2FnZTsKQEAgLTU0NSw2ICs1NTQsMTAgQEAKIAkibGlzdCBhbmQgYWNjZXNzIFBDSSBDb25maWd1cmF0aW9uIFNwYWNlIiwKIAkiW2J1c10gW2xvbmddXG4iCiAJIiAgICAtIHNob3J0IG9yIGxvbmcgbGlzdCBvZiBQQ0kgZGV2aWNlcyBvbiBidXMgJ2J1cydcbiIKKyNpZmRlZiBDT05GSUdfQ01EX1BDSV9FTlVNCisJInBjaSBlbnVtXG4iCisJIiAgICAtIHJlLWVudW1lcmF0ZSBQQ0kgYnVzZXNcbiIKKyNlbmRpZgogCSJwY2kgaGVhZGVyIGIuZC5mXG4iCiAJIiAgICAtIHNob3cgaGVhZGVyIG9mIFBDSSBkZXZpY2UgJ2J1cy5kZXZpY2UuZnVuY3Rpb24nXG4iCiAJInBjaSBkaXNwbGF5Wy5iLCAudywgLmxdIGIuZC5mIFthZGRyZXNzXSBbIyBvZiBvYmplY3RzXVxuIgpkaWZmIC0tZ2l0IGEvY29tbW9uL2Vudl9mbGFzaC5jIGIvY29tbW9uL2Vudl9mbGFzaC5jCmluZGV4IDFkYTc4YjcuLjU0YzBiZmUgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9lbnZfZmxhc2guYworKysgYi9jb21tb24vZW52X2ZsYXNoLmMKQEAgLTgyLDkgKzgyLDYgQEAKIAlyZXR1cm4gKCooKHVjaGFyICopKGdkLT5lbnZfYWRkciArIGluZGV4KSkpOwogfQogCi0jdW5kZWYgZGVidWcKLSNkZWZpbmUgZGVidWcgcHJpbnRmCi0KICNpZmRlZiBDT05GSUdfRU5WX0FERFJfUkVEVU5ECiAKIGludCAgZW52X2luaXQodm9pZCkKZGlmZiAtLWdpdCBhL2NvbW1vbi9lbnZfc2YuYyBiL2NvbW1vbi9lbnZfc2YuYwppbmRleCBmYjBjMzliLi5hNTk3YjI0IDEwMDY0NAotLS0gYS9jb21tb24vZW52X3NmLmMKKysrIGIvY29tbW9uL2Vudl9zZi5jCkBAIC01MSw3ICs1MSw3IEBACiAKICNkZWZpbmUgQUNUSVZFX0ZMQUcgICAxCiAjZGVmaW5lIE9CU09MRVRFX0ZMQUcgMAotI2VuZGlmIC8qIENPTkZJR19FTlZfQUREUl9SRURVTkQgKi8KKyNlbmRpZiAvKiBDT05GSUdfRU5WX09GRlNFVF9SRURVTkQgKi8KIAogREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CiAKQEAgLTY5LDEzICs2OSw2IEBACiB9CiAKICNpZiBkZWZpbmVkKENPTkZJR19FTlZfT0ZGU0VUX1JFRFVORCkKLXZvaWQgc3dhcF9lbnYodm9pZCkKLXsKLQl1bG9uZyB0bXBfb2Zmc2V0ID0gZW52X29mZnNldDsKLQotCWVudl9vZmZzZXQgPSBlbnZfbmV3X29mZnNldDsKLQllbnZfbmV3X29mZnNldCA9IHRtcF9vZmZzZXQ7Ci19CiAKIGludCBzYXZlZW52KHZvaWQpCiB7CkBAIC04OSw4ICs4MiwxMyBAQAogCWNoYXIJZmxhZyA9IE9CU09MRVRFX0ZMQUcsIG5ld19mbGFnID0gQUNUSVZFX0ZMQUc7CiAKIAlpZiAoIWVudl9mbGFzaCkgewotCQlwdXRzKCJFbnZpcm9ubWVudCBTUEkgZmxhc2ggbm90IGluaXRpYWxpemVkXG4iKTsKLQkJcmV0dXJuIDE7CisJCWVudl9mbGFzaCA9IHNwaV9mbGFzaF9wcm9iZShDT05GSUdfRU5WX1NQSV9CVVMsCisJCQlDT05GSUdfRU5WX1NQSV9DUywKKwkJCUNPTkZJR19FTlZfU1BJX01BWF9IWiwgQ09ORklHX0VOVl9TUElfTU9ERSk7CisJCWlmICghZW52X2ZsYXNoKSB7CisJCQlzZXRfZGVmYXVsdF9lbnYoIiFzcGlfZmxhc2hfcHJvYmUoKSBmYWlsZWQiKTsKKwkJCXJldHVybiAxOworCQl9CiAJfQogCiAJcmVzID0gKGNoYXIgKikmZW52X25ldy5kYXRhOwpAQCAtMTAyLDYgKzEwMCwxNCBAQAogCWVudl9uZXcuY3JjICAgPSBjcmMzMigwLCBlbnZfbmV3LmRhdGEsIEVOVl9TSVpFKTsKIAllbnZfbmV3LmZsYWdzID0gQUNUSVZFX0ZMQUc7CiAKKwlpZiAoZ2QtPmVudl92YWxpZCA9PSAxKSB7CisJCWVudl9uZXdfb2Zmc2V0ID0gQ09ORklHX0VOVl9PRkZTRVRfUkVEVU5EOworCQllbnZfb2Zmc2V0ID0gQ09ORklHX0VOVl9PRkZTRVQ7CisJfSBlbHNlIHsKKwkJZW52X25ld19vZmZzZXQgPSBDT05GSUdfRU5WX09GRlNFVDsKKwkJZW52X29mZnNldCA9IENPTkZJR19FTlZfT0ZGU0VUX1JFRFVORDsKKwl9CisKIAkvKiBJcyB0aGUgc2VjdG9yIGxhcmdlciB0aGFuIHRoZSBlbnYgKGkuZS4gZW1iZWRkZWQpICovCiAJaWYgKENPTkZJR19FTlZfU0VDVF9TSVpFID4gQ09ORklHX0VOVl9TSVpFKSB7CiAJCXNhdmVkX3NpemUgPSBDT05GSUdfRU5WX1NFQ1RfU0laRSAtIENPTkZJR19FTlZfU0laRTsKQEAgLTEzMCwyNyArMTM2LDkgQEAKIAkJZ290byBkb25lOwogCiAJcHV0cygiV3JpdGluZyB0byBTUEkgZmxhc2guLi4iKTsKLQlyZXQgPSBzcGlfZmxhc2hfd3JpdGUoZW52X2ZsYXNoLAotCQllbnZfbmV3X29mZnNldCArIG9mZnNldG9mKGVudl90LCBkYXRhKSwKLQkJc2l6ZW9mKGVudl9uZXcuZGF0YSksIGVudl9uZXcuZGF0YSk7Ci0JaWYgKHJldCkKLQkJZ290byBkb25lOwogCi0JcmV0ID0gc3BpX2ZsYXNoX3dyaXRlKGVudl9mbGFzaCwKLQkJZW52X25ld19vZmZzZXQgKyBvZmZzZXRvZihlbnZfdCwgY3JjKSwKLQkJc2l6ZW9mKGVudl9uZXcuY3JjKSwgJmVudl9uZXcuY3JjKTsKLQlpZiAocmV0KQotCQlnb3RvIGRvbmU7Ci0KLQlyZXQgPSBzcGlfZmxhc2hfd3JpdGUoZW52X2ZsYXNoLAotCQllbnZfb2Zmc2V0ICsgb2Zmc2V0b2YoZW52X3QsIGZsYWdzKSwKLQkJc2l6ZW9mKGVudl9uZXcuZmxhZ3MpLCAmZmxhZyk7Ci0JaWYgKHJldCkKLQkJZ290byBkb25lOwotCi0JcmV0ID0gc3BpX2ZsYXNoX3dyaXRlKGVudl9mbGFzaCwKLQkJZW52X25ld19vZmZzZXQgKyBvZmZzZXRvZihlbnZfdCwgZmxhZ3MpLAotCQlzaXplb2YoZW52X25ldy5mbGFncyksICZuZXdfZmxhZyk7CisJcmV0ID0gc3BpX2ZsYXNoX3dyaXRlKGVudl9mbGFzaCwgZW52X25ld19vZmZzZXQsCisJCUNPTkZJR19FTlZfU0laRSwgJmVudl9uZXcpOwogCWlmIChyZXQpCiAJCWdvdG8gZG9uZTsKIApAQCAtMTYxLDExICsxNDksMTggQEAKIAkJCWdvdG8gZG9uZTsKIAl9CiAKLQlzd2FwX2VudigpOworCXJldCA9IHNwaV9mbGFzaF93cml0ZShlbnZfZmxhc2gsCisJCWVudl9vZmZzZXQgKyBvZmZzZXRvZihlbnZfdCwgZmxhZ3MpLAorCQlzaXplb2YoZW52X25ldy5mbGFncyksICZmbGFnKTsKKwlpZiAocmV0KQorCQlnb3RvIGRvbmU7CiAKLQlyZXQgPSAwOwogCXB1dHMoImRvbmVcbiIpOwogCisJZ2QtPmVudl92YWxpZCA9IChnZC0+ZW52X3ZhbGlkID09IDIgPyAxIDogMik7CisKKwlwcmludGYoIlZhbGlkIGVudmlyb25tZW50OiAlZFxuIiwgZ2QtPmVudl92YWxpZCk7CisKICBkb25lOgogCWlmIChzYXZlZF9idWZmZXIpCiAJCWZyZWUoc2F2ZWRfYnVmZmVyKTsKQEAgLTE3OCw3ICsxNzMsNyBAQAogCWludCBjcmMxX29rID0gMCwgY3JjMl9vayA9IDA7CiAJZW52X3QgKnRtcF9lbnYxID0gTlVMTDsKIAllbnZfdCAqdG1wX2VudjIgPSBOVUxMOwotCWVudl90IGVwOworCWVudl90ICplcCA9IE5VTEw7CiAJdWNoYXIgZmxhZzEsIGZsYWcyOwogCS8qIGN1cnJlbnRfZW52IGlzIHNldCBvbmx5IGluIGNhc2UgYm90aCBhcmVhcyBhcmUgdmFsaWQhICovCiAJaW50IGN1cnJlbnRfZW52ID0gMDsKQEAgLTIxOSw5MCArMjE0LDU3IEBACiAJCWZsYWcyID0gdG1wX2VudjItPmZsYWdzOwogCX0KIAotCWlmICghY3JjMV9vayAmJiAhY3JjMl9vaykKLQkJZ290byBlcnJfY3JjOwotCWVsc2UgaWYgKGNyYzFfb2sgJiYgIWNyYzJfb2spIHsKKwlpZiAoIWNyYzFfb2sgJiYgIWNyYzJfb2spIHsKKwkJZnJlZSh0bXBfZW52MSk7CisJCWZyZWUodG1wX2VudjIpOworCQlzZXRfZGVmYXVsdF9lbnYoIiFiYWQgQ1JDIik7CisJCXJldHVybjsKKwl9IGVsc2UgaWYgKGNyYzFfb2sgJiYgIWNyYzJfb2spIHsKIAkJZ2QtPmVudl92YWxpZCA9IDE7CiAJCWVwID0gdG1wX2VudjE7CiAJfSBlbHNlIGlmICghY3JjMV9vayAmJiBjcmMyX29rKSB7CiAJCWdkLT5lbnZfdmFsaWQgPSAxOwotCQllcCA9IHRtcF9lbnYyOwotCQlzd2FwX2VudigpOwogCX0gZWxzZSBpZiAoZmxhZzEgPT0gQUNUSVZFX0ZMQUcgJiYgZmxhZzIgPT0gT0JTT0xFVEVfRkxBRykgewogCQlnZC0+ZW52X3ZhbGlkID0gMTsKLQkJZXAgPSB0bXBfZW52MTsKIAl9IGVsc2UgaWYgKGZsYWcxID09IE9CU09MRVRFX0ZMQUcgJiYgZmxhZzIgPT0gQUNUSVZFX0ZMQUcpIHsKLQkJZ2QtPmVudl92YWxpZCA9IDE7Ci0JCWVwID0gdG1wX2VudjI7Ci0JCXN3YXBfZW52KCk7CisJCWdkLT5lbnZfdmFsaWQgPSAyOwogCX0gZWxzZSBpZiAoZmxhZzEgPT0gZmxhZzIpIHsKIAkJZ2QtPmVudl92YWxpZCA9IDI7Ci0JCWVwID0gdG1wX2VudjE7Ci0JCWN1cnJlbnRfZW52ID0gMTsKIAl9IGVsc2UgaWYgKGZsYWcxID09IDB4RkYpIHsKIAkJZ2QtPmVudl92YWxpZCA9IDI7Ci0JCWVwID0gdG1wX2VudjE7Ci0JCWN1cnJlbnRfZW52ID0gMTsKIAl9IGVsc2UgewogCQkvKgogCQkgKiB0aGlzIGRpZmZlcnMgZnJvbSBjb2RlIGluIGVudl9mbGFzaC5jLCBidXQgSSB0aGluayBhIHNhbmUKIAkJICogZGVmYXVsdCBwYXRoIGlzIGRlc2lyYWJsZS4KIAkJICovCiAJCWdkLT5lbnZfdmFsaWQgPSAyOworCX0KKworCWZyZWUoZW52X3B0cik7CisKKwlpZiAoZ2QtPmVudl92YWxpZCA9PSAxKQorCQllcCA9IHRtcF9lbnYxOworCWVsc2UKIAkJZXAgPSB0bXBfZW52MjsKLQkJc3dhcF9lbnYoKTsKLQkJY3VycmVudF9lbnYgPSAyOwotCX0KIAotCXJjID0gZW52X2ltcG9ydCgoY2hhciAqKWVwLCAwKTsKLQlpZiAoIXJjKSB7CisJcmV0ID0gZW52X2ltcG9ydCgoY2hhciAqKWVwLCAwKTsKKwlpZiAoIXJldCkgewogCQllcnJvcigiQ2Fubm90IGltcG9ydCBlbnZpcm9ubWVudDogZXJybm8gPSAlZFxuIiwgZXJybm8pOwotCQlnb3RvIG91dDsKKwkJc2V0X2RlZmF1bHRfZW52KCJlbnZfaW1wb3J0IGZhaWxlZCIpOwogCX0KIAotCWlmIChjdXJyZW50X2VudiA9PSAxKSB7Ci0JCWlmIChmbGFnMiAhPSBPQlNPTEVURV9GTEFHKSB7Ci0JCQlmbGFnMiA9IE9CU09MRVRFX0ZMQUc7Ci0JCQlzcGlfZmxhc2hfd3JpdGUoZW52X2ZsYXNoLAotCQkJCWVudl9uZXdfb2Zmc2V0ICsgb2Zmc2V0b2YoZW52X3QsIGZsYWdzKSwKLQkJCQlzaXplb2YoZW52X25ldy5mbGFncyksICZmbGFnMik7Ci0JCX0KLQkJaWYgKGZsYWcxICE9IEFDVElWRV9GTEFHKSB7Ci0JCQlmbGFnMSA9IEFDVElWRV9GTEFHOwotCQkJc3BpX2ZsYXNoX3dyaXRlKGVudl9mbGFzaCwKLQkJCQllbnZfb2Zmc2V0ICsgb2Zmc2V0b2YoZW52X3QsIGZsYWdzKSwKLQkJCQlzaXplb2YoZW52X25ldy5mbGFncyksICZmbGFnMSk7Ci0JCX0KLQl9IGVsc2UgaWYgKGN1cnJlbnRfZW52ID09IDIpIHsKLQkJaWYgKGZsYWcxICE9IE9CU09MRVRFX0ZMQUcpIHsKLQkJCWZsYWcxID0gT0JTT0xFVEVfRkxBRzsKLQkJCXNwaV9mbGFzaF93cml0ZShlbnZfZmxhc2gsCi0JCQkJZW52X25ld19vZmZzZXQgKyBvZmZzZXRvZihlbnZfdCwgZmxhZ3MpLAotCQkJCXNpemVvZihlbnZfbmV3LmZsYWdzKSwgJmZsYWcxKTsKLQkJfQotCQlpZiAoZmxhZzIgIT0gQUNUSVZFX0ZMQUcpIHsKLQkJCWZsYWcyID0gQUNUSVZFX0ZMQUc7Ci0JCQlzcGlfZmxhc2hfd3JpdGUoZW52X2ZsYXNoLAotCQkJCWVudl9vZmZzZXQgKyBvZmZzZXRvZihlbnZfdCwgZmxhZ3MpLAotCQkJCXNpemVvZihlbnZfbmV3LmZsYWdzKSwgJmZsYWcyKTsKLQkJfQotCX0KLQlpZiAoZ2QtPmVudl92YWxpZCA9PSAyKSB7Ci0JCXB1dHMoIioqKiBXYXJuaW5nIC0gc29tZSBwcm9ibGVtcyBkZXRlY3RlZCAiCi0JCQkicmVhZGluZyBlbnZpcm9ubWVudDsgcmVjb3ZlcmVkIHN1Y2Nlc3NmdWxseVxuXG4iKTsKLQl9Ci0JaWYgKHRtcF9lbnYxKQotCQlmcmVlKHRtcF9lbnYxKTsKLQlpZiAodG1wX2VudjIpCi0JCWZyZWUodG1wX2VudjIpOwotCXJldHVybjsKLQogZXJyX3JlYWQ6CiAJc3BpX2ZsYXNoX2ZyZWUoZW52X2ZsYXNoKTsKIAllbnZfZmxhc2ggPSBOVUxMOwogb3V0OgorCWlmICh0bXBfZW52MSkKKwkJZnJlZSh0bXBfZW52MSk7CisJaWYgKHRtcF9lbnYyKQorCQlmcmVlKHRtcF9lbnYyKTsKIAlmcmVlKHRtcF9lbnYxKTsKIAlmcmVlKHRtcF9lbnYyKTsKKworCXJldHVybjsKIH0KICNlbHNlCiBpbnQgc2F2ZWVudih2b2lkKQpAQCAtMzExLDEwICsyNzMsMTggQEAKIAljaGFyICpzYXZlZF9idWZmZXIgPSBOVUxMOwogCXUzMiBzZWN0b3IgPSAxOwogCWludCByZXQ7CisJZW52X3QJZW52X25ldzsKKwljaGFyCSpyZXM7CisJc3NpemVfdAlsZW47CiAKIAlpZiAoIWVudl9mbGFzaCkgewotCQlwdXRzKCJFbnZpcm9ubWVudCBTUEkgZmxhc2ggbm90IGluaXRpYWxpemVkXG4iKTsKLQkJcmV0dXJuIDE7CisJCWVudl9mbGFzaCA9IHNwaV9mbGFzaF9wcm9iZShDT05GSUdfRU5WX1NQSV9CVVMsCisJCQlDT05GSUdfRU5WX1NQSV9DUywKKwkJCUNPTkZJR19FTlZfU1BJX01BWF9IWiwgQ09ORklHX0VOVl9TUElfTU9ERSk7CisJCWlmICghZW52X2ZsYXNoKSB7CisJCQlzZXRfZGVmYXVsdF9lbnYoIiFzcGlfZmxhc2hfcHJvYmUoKSBmYWlsZWQiKTsKKwkJCXJldHVybiAxOworCQl9CiAJfQogCiAJLyogSXMgdGhlIHNlY3RvciBsYXJnZXIgdGhhbiB0aGUgZW52IChpLmUuIGVtYmVkZGVkKSAqLwpAQCAtMzI2LDcgKzI5Niw4IEBACiAJCQlyZXQgPSAxOwogCQkJZ290byBkb25lOwogCQl9Ci0JCXJldCA9IHNwaV9mbGFzaF9yZWFkKGVudl9mbGFzaCwgc2F2ZWRfb2Zmc2V0LCBzYXZlZF9zaXplLCBzYXZlZF9idWZmZXIpOworCQlyZXQgPSBzcGlfZmxhc2hfcmVhZChlbnZfZmxhc2gsIHNhdmVkX29mZnNldCwKKwkJCXNhdmVkX3NpemUsIHNhdmVkX2J1ZmZlcik7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGRvbmU7CiAJfQpAQCAtMzM3LDE4ICszMDgsMjkgQEAKIAkJCXNlY3RvcisrOwogCX0KIAorCXJlcyA9IChjaGFyICopJmVudl9uZXcuZGF0YTsKKwlsZW4gPSBoZXhwb3J0KCdcMCcsICZyZXMsIEVOVl9TSVpFKTsKKwlpZiAobGVuIDwgMCkgeworCQllcnJvcigiQ2Fubm90IGV4cG9ydCBlbnZpcm9ubWVudDogZXJybm8gPSAlZFxuIiwgZXJybm8pOworCQlnb3RvIGRvbmU7CisJfQorCWVudl9uZXcuY3JjID0gY3JjMzIoMCwgZW52X25ldy5kYXRhLCBFTlZfU0laRSk7CisKIAlwdXRzKCJFcmFzaW5nIFNQSSBmbGFzaC4uLiIpOwotCXJldCA9IHNwaV9mbGFzaF9lcmFzZShlbnZfZmxhc2gsIENPTkZJR19FTlZfT0ZGU0VULCBzZWN0b3IgKiBDT05GSUdfRU5WX1NFQ1RfU0laRSk7CisJcmV0ID0gc3BpX2ZsYXNoX2VyYXNlKGVudl9mbGFzaCwgQ09ORklHX0VOVl9PRkZTRVQsCisJCXNlY3RvciAqIENPTkZJR19FTlZfU0VDVF9TSVpFKTsKIAlpZiAocmV0KQogCQlnb3RvIGRvbmU7CiAKIAlwdXRzKCJXcml0aW5nIHRvIFNQSSBmbGFzaC4uLiIpOwotCXJldCA9IHNwaV9mbGFzaF93cml0ZShlbnZfZmxhc2gsIENPTkZJR19FTlZfT0ZGU0VULCBDT05GSUdfRU5WX1NJWkUsIGVudl9wdHIpOworCXJldCA9IHNwaV9mbGFzaF93cml0ZShlbnZfZmxhc2gsIENPTkZJR19FTlZfT0ZGU0VULAorCQlDT05GSUdfRU5WX1NJWkUsICZlbnZfbmV3KTsKIAlpZiAocmV0KQogCQlnb3RvIGRvbmU7CiAKIAlpZiAoQ09ORklHX0VOVl9TRUNUX1NJWkUgPiBDT05GSUdfRU5WX1NJWkUpIHsKLQkJcmV0ID0gc3BpX2ZsYXNoX3dyaXRlKGVudl9mbGFzaCwgc2F2ZWRfb2Zmc2V0LCBzYXZlZF9zaXplLCBzYXZlZF9idWZmZXIpOworCQlyZXQgPSBzcGlfZmxhc2hfd3JpdGUoZW52X2ZsYXNoLCBzYXZlZF9vZmZzZXQsCisJCQlzYXZlZF9zaXplLCBzYXZlZF9idWZmZXIpOwogCQlpZiAocmV0KQogCQkJZ290byBkb25lOwogCX0KZGlmZiAtLWdpdCBhL2NvbW1vbi9od2NvbmZpZy5jIGIvY29tbW9uL2h3Y29uZmlnLmMKaW5kZXggMWY5ZjRhMC4uM2M5NzU5ZiAxMDA2NDQKLS0tIGEvY29tbW9uL2h3Y29uZmlnLmMKKysrIGIvY29tbW9uL2h3Y29uZmlnLmMKQEAgLTI2LDYgKzI2LDggQEAKICNkZWZpbmUgbWluKGEsIGIpICgoKGEpIDwgKGIpKSA/IChhKSA6IChiKSkKICNlbmRpZiAvKiBIV0NPTkZJR19URVNUICovCiAKK0RFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCiBzdGF0aWMgY29uc3QgY2hhciAqaHdjb25maWdfcGFyc2UoY29uc3QgY2hhciAqb3B0cywgc2l6ZV90IG1heGxlbiwKIAkJCQkgIGNvbnN0IGNoYXIgKm9wdCwgY2hhciAqc3RvcGNocywgY2hhciBlcWNoLAogCQkJCSAgc2l6ZV90ICphcmdsZW4pCkBAIC02OSw5ICs3MSwyNiBAQAogY29uc3QgY2hhciAqY3B1X2h3Y29uZmlnIF9fYXR0cmlidXRlX18oKHdlYWspKTsKIGNvbnN0IGNoYXIgKmJvYXJkX2h3Y29uZmlnIF9fYXR0cmlidXRlX18oKHdlYWspKTsKIAorI2RlZmluZSBIV0NPTkZJR19QUkVfUkVMT0NfQlVGX1NJWkUJMTI4CisKIHN0YXRpYyBjb25zdCBjaGFyICpfX2h3Y29uZmlnKGNvbnN0IGNoYXIgKm9wdCwgc2l6ZV90ICphcmdsZW4pCiB7Ci0JY29uc3QgY2hhciAqZW52X2h3Y29uZmlnID0gZ2V0ZW52KCJod2NvbmZpZyIpOworCWNvbnN0IGNoYXIgKmVudl9od2NvbmZpZyA9IE5VTEw7CisJY2hhciBidWZbSFdDT05GSUdfUFJFX1JFTE9DX0JVRl9TSVpFXTsKKworCWlmIChnZC0+ZmxhZ3MgJiBHRF9GTEdfRU5WX1JFQURZKSB7CisJCWVudl9od2NvbmZpZyA9IGdldGVudigiaHdjb25maWciKTsKKwl9IGVsc2UgeworCQkvKgorCQkgKiBVc2Ugb3VyIG93biBvbiBzdGFjayBiYXNlZCBidWZmZXIgYmVmb3JlIHJlbG9jYXRpb24gdG8gYWxsb3cKKwkJICogYWNjZXNzaW5nIGxvbmdlciBod2NvbmZpZyBzdHJpbmdzIHRoYXQgbWlnaHQgYmUgaW4gdGhlCisJCSAqIGVudmlyb25tZW50IGJlZm9yZSB3ZSd2ZSByZWxvY2F0ZWQuICBUaGlzIGlzIHByZXR0eSBmcmFnaWxlCisJCSAqIG9uIGJvdGggdGhlIHVzZSBvZiBzdGFjayBhbmQgaWYgdGhlIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLgorCQkgKiBIb3dldmVyIHdlIHdpbGwgZ2V0IGEgd2FybmluZyBmcm9tIGdldGVudl9mIGZvciB0aGUgbGF0ZXIuCisJCSAqLworCQlpZiAoKGdldGVudl9mKCJod2NvbmZpZyIsIGJ1Ziwgc2l6ZW9mKGJ1ZikpKSA+IDApCisJCQllbnZfaHdjb25maWcgPSBidWY7CisJfQogCiAJaWYgKGVudl9od2NvbmZpZykKIAkJcmV0dXJuIGh3Y29uZmlnX3BhcnNlKGVudl9od2NvbmZpZywgc3RybGVuKGVudl9od2NvbmZpZyksCmRpZmYgLS1naXQgYS9jb21tb24vaW1hZ2UuYyBiL2NvbW1vbi9pbWFnZS5jCmluZGV4IDM4NTQ2NGQuLjg5YzEwYjggMTAwNjQ0Ci0tLSBhL2NvbW1vbi9pbWFnZS5jCisrKyBiL2NvbW1vbi9pbWFnZS5jCkBAIC0xMTc2LDggKzExNzYsMTAgQEAKICAqIEBvZl9mbGF0X3RyZWU6IHBvaW50ZXIgdG8gYSBjaGFyKiB2YXJpYWJsZSwgd2lsbCBob2xkIGZkdCBzdGFydCBhZGRyZXNzCiAgKiBAb2Zfc2l6ZTogcG9pbnRlciB0byBhIHVsb25nIHZhcmlhYmxlLCB3aWxsIGhvbGQgZmR0IGxlbmd0aAogICoKLSAqIGJvb3RfcmVsb2NhdGVfZmR0KCkgZGV0ZXJtaW5lcyBpZiB0aGUgb2ZfZmxhdF90cmVlIGFkZHJlc3MgaXMgd2l0aGluCi0gKiB0aGUgYm9vdG1hcCBhbmQgaWYgbm90IHJlbG9jYXRlcyBpdCBpbnRvIHRoYXQgcmVnaW9uCisgKiBib290X3JlbG9jYXRlX2ZkdCgpIGFsbG9jYXRlcyBhIHJlZ2lvbiBvZiBtZW1vcnkgd2l0aGluIHRoZSBib290bWFwIGFuZAorICogcmVsb2NhdGVzIHRoZSBvZl9mbGF0X3RyZWUgaW50byB0aGF0IHJlZ2lvbiwgZXZlbiBpZiB0aGUgZmR0IGlzIGFscmVhZHkgaW4KKyAqIHRoZSBib290bWFwLiAgSXQgYWxzbyBleHBhbmRzIHRoZSBzaXplIG9mIHRoZSBmZHQgYnkgQ09ORklHX1NZU19GRFRfUEFECisgKiBieXRlcy4KICAqCiAgKiBvZl9mbGF0X3RyZWUgYW5kIG9mX3NpemUgYXJlIHNldCB0byBmaW5hbCAoYWZ0ZXIgcmVsb2NhdGlvbikgdmFsdWVzCiAgKgpAQCAtMTE4OSw5ICsxMTkxLDEwIEBACiBpbnQgYm9vdF9yZWxvY2F0ZV9mZHQgKHN0cnVjdCBsbWIgKmxtYiwgdWxvbmcgYm9vdG1hcF9iYXNlLAogCQljaGFyICoqb2ZfZmxhdF90cmVlLCB1bG9uZyAqb2Zfc2l6ZSkKIHsKLQljaGFyCSpmZHRfYmxvYiA9ICpvZl9mbGF0X3RyZWU7Ci0JdWxvbmcJcmVsb2NhdGUgPSAwOworCXZvaWQJKmZkdF9ibG9iID0gKm9mX2ZsYXRfdHJlZTsKKwl2b2lkCSpvZl9zdGFydCA9IDA7CiAJdWxvbmcJb2ZfbGVuID0gMDsKKwlpbnQJZXJyOwogCiAJLyogbm90aGluZyB0byBkbyAqLwogCWlmICgqb2Zfc2l6ZSA9PSAwKQpAQCAtMTIwMiw2MyArMTIwNSwzMyBAQAogCQlnb3RvIGVycm9yOwogCX0KIAotI2lmbmRlZiBDT05GSUdfU1lTX05PX0ZMQVNICi0JLyogbW92ZSB0aGUgYmxvYiBpZiBpdCBpcyBpbiBmbGFzaCAoc2V0IHJlbG9jYXRlKSAqLwotCWlmIChhZGRyMmluZm8gKCh1bG9uZylmZHRfYmxvYikgIT0gTlVMTCkKLQkJcmVsb2NhdGUgPSAxOwotI2VuZGlmCisJLyogcG9zaXRpb24gb24gYSA0SyBib3VuZGFyeSBiZWZvcmUgdGhlIGFsbG9jX2N1cnJlbnQgKi8KKwkvKiBQYWQgdGhlIEZEVCBieSBhIHNwZWNpZmllZCBhbW91bnQgKi8KKwlvZl9sZW4gPSAqb2Zfc2l6ZSArIENPTkZJR19TWVNfRkRUX1BBRDsKKwlvZl9zdGFydCA9ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpbG1iX2FsbG9jX2Jhc2UobG1iLCBvZl9sZW4sIDB4MTAwMCwKKwkJCShDT05GSUdfU1lTX0JPT1RNQVBTWiArIGJvb3RtYXBfYmFzZSkpOwogCi0JLyoKLQkgKiBUaGUgYmxvYiBuZWVkcyB0byBiZSBpbnNpZGUgdGhlIGJvb3QgbWFwcGluZy4KLQkgKi8KLQlpZiAoZmR0X2Jsb2IgPCAoY2hhciAqKWJvb3RtYXBfYmFzZSkKLQkJcmVsb2NhdGUgPSAxOwotCi0JaWYgKChmZHRfYmxvYiArICpvZl9zaXplICsgQ09ORklHX1NZU19GRFRfUEFEKSA+PQotCQkJKChjaGFyICopQ09ORklHX1NZU19CT09UTUFQU1ogKyBib290bWFwX2Jhc2UpKQotCQlyZWxvY2F0ZSA9IDE7Ci0KLQkvKiBtb3ZlIGZsYXR0ZW5kIGRldmljZSB0cmVlIGlmIG5lZWRlZCAqLwotCWlmIChyZWxvY2F0ZSkgewotCQlpbnQgZXJyOwotCQl1bG9uZyBvZl9zdGFydCA9IDA7Ci0KLQkJLyogcG9zaXRpb24gb24gYSA0SyBib3VuZGFyeSBiZWZvcmUgdGhlIGFsbG9jX2N1cnJlbnQgKi8KLQkJLyogUGFkIHRoZSBGRFQgYnkgYSBzcGVjaWZpZWQgYW1vdW50ICovCi0JCW9mX2xlbiA9ICpvZl9zaXplICsgQ09ORklHX1NZU19GRFRfUEFEOwotCQlvZl9zdGFydCA9ICh1bnNpZ25lZCBsb25nKWxtYl9hbGxvY19iYXNlKGxtYiwgb2ZfbGVuLCAweDEwMDAsCi0JCQkJKENPTkZJR19TWVNfQk9PVE1BUFNaICsgYm9vdG1hcF9iYXNlKSk7Ci0KLQkJaWYgKG9mX3N0YXJ0ID09IDApIHsKLQkJCXB1dHMoImRldmljZSB0cmVlIC0gYWxsb2NhdGlvbiBlcnJvclxuIik7Ci0JCQlnb3RvIGVycm9yOwotCQl9Ci0KLQkJZGVidWcgKCIjIyBkZXZpY2UgdHJlZSBhdCAweCUwOGxYIC4uLiAweCUwOGxYIChsZW49JWxkPTB4JWxYKVxuIiwKLQkJCSh1bG9uZylmZHRfYmxvYiwgKHVsb25nKWZkdF9ibG9iICsgKm9mX3NpemUgLSAxLAotCQkJb2ZfbGVuLCBvZl9sZW4pOwotCi0JCXByaW50ZiAoIiAgIExvYWRpbmcgRGV2aWNlIFRyZWUgdG8gJTA4bHgsIGVuZCAlMDhseCAuLi4gIiwKLQkJCW9mX3N0YXJ0LCBvZl9zdGFydCArIG9mX2xlbiAtIDEpOwotCi0JCWVyciA9IGZkdF9vcGVuX2ludG8gKGZkdF9ibG9iLCAodm9pZCAqKW9mX3N0YXJ0LCBvZl9sZW4pOwotCQlpZiAoZXJyICE9IDApIHsKLQkJCWZkdF9lcnJvciAoImZkdCBtb3ZlIGZhaWxlZCIpOwotCQkJZ290byBlcnJvcjsKLQkJfQotCQlwdXRzICgiT0tcbiIpOwotCi0JCSpvZl9mbGF0X3RyZWUgPSAoY2hhciAqKW9mX3N0YXJ0OwotCQkqb2Zfc2l6ZSA9IG9mX2xlbjsKLQl9IGVsc2UgewotCQkqb2ZfZmxhdF90cmVlID0gZmR0X2Jsb2I7Ci0JCW9mX2xlbiA9ICpvZl9zaXplICsgQ09ORklHX1NZU19GRFRfUEFEOwotCQlsbWJfcmVzZXJ2ZShsbWIsICh1bG9uZylmZHRfYmxvYiwgb2ZfbGVuKTsKLQkJZmR0X3NldF90b3RhbHNpemUoKm9mX2ZsYXRfdHJlZSwgb2ZfbGVuKTsKLQotCQkqb2Zfc2l6ZSA9IG9mX2xlbjsKKwlpZiAob2Zfc3RhcnQgPT0gMCkgeworCQlwdXRzKCJkZXZpY2UgdHJlZSAtIGFsbG9jYXRpb24gZXJyb3JcbiIpOworCQlnb3RvIGVycm9yOwogCX0KIAorCWRlYnVnICgiIyMgZGV2aWNlIHRyZWUgYXQgJXAgLi4uICVwIChsZW49JWxkIFsweCVsWF0pXG4iLAorCQlmZHRfYmxvYiwgZmR0X2Jsb2IgKyAqb2Zfc2l6ZSAtIDEsIG9mX2xlbiwgb2ZfbGVuKTsKKworCXByaW50ZiAoIiAgIExvYWRpbmcgRGV2aWNlIFRyZWUgdG8gJXAsIGVuZCAlcCAuLi4gIiwKKwkJb2Zfc3RhcnQsIG9mX3N0YXJ0ICsgb2ZfbGVuIC0gMSk7CisKKwllcnIgPSBmZHRfb3Blbl9pbnRvIChmZHRfYmxvYiwgb2Zfc3RhcnQsIG9mX2xlbik7CisJaWYgKGVyciAhPSAwKSB7CisJCWZkdF9lcnJvciAoImZkdCBtb3ZlIGZhaWxlZCIpOworCQlnb3RvIGVycm9yOworCX0KKwlwdXRzICgiT0tcbiIpOworCisJKm9mX2ZsYXRfdHJlZSA9IG9mX3N0YXJ0OworCSpvZl9zaXplID0gb2ZfbGVuOworCiAJc2V0X3dvcmtpbmdfZmR0X2FkZHIoKm9mX2ZsYXRfdHJlZSk7CiAJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2NvbW1vbi91c2Jfc3RvcmFnZS5jIGIvY29tbW9uL3VzYl9zdG9yYWdlLmMKaW5kZXggNjEzYzRmMC4uMWU2Y2Q2YSAxMDA2NDQKLS0tIGEvY29tbW9uL3VzYl9zdG9yYWdlLmMKKysrIGIvY29tbW9uL3VzYl9zdG9yYWdlLmMKQEAgLTcwLDcgKzcwLDcgQEAKIC8qIGRpcmVjdGlvbiB0YWJsZSAtLSB0aGlzIGluZGljYXRlcyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBkYXRhCiAgKiB0cmFuc2ZlciBmb3IgZWFjaCBjb21tYW5kIGNvZGUgLS0gYSAxIGluZGljYXRlcyBpbnB1dAogICovCi11bnNpZ25lZCBjaGFyIHVzX2RpcmVjdGlvblsyNTYvOF0gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB1c19kaXJlY3Rpb25bMjU2LzhdID0gewogCTB4MjgsIDB4ODEsIDB4MTQsIDB4MTQsIDB4MjAsIDB4MDEsIDB4OTAsIDB4NzcsCiAJMHgwQywgMHgyMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKIAkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAxLApkaWZmIC0tZ2l0IGEvZG9jL1JFQURNRS5MRURfZGlzcGxheSBiL2RvYy9SRUFETUUuTEVEX2Rpc3BsYXkKaW5kZXggNTIxNzQ2ZS4uMTk5NzdlYSAxMDA2NDQKLS0tIGEvZG9jL1JFQURNRS5MRURfZGlzcGxheQorKysgYi9kb2MvUkVBRE1FLkxFRF9kaXNwbGF5CkBAIC0xNCw3ICsxNCw2IEBACiBhbiBPUmVkIGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogIERJU1BMQVlfQ0xFQVIJLS0gY2xlYXIgdGhlIGRpc3BsYXkKICBESVNQTEFZX0hPTUUJLS0gc2V0IHRoZSBwb3NpdGlvbiB0byB0aGUgYmVnaW5uaW5nIG9mIGRpc3BsYXkKLSBESVNQTEFZX01BUksJLS0gZW5hYmxlIG1hcmsgKGRlY2ltYWwgcG9pbnQpLCBpZiBpbXBsZW1lbnRlZAogCiBpbnQgZGlzcGxheV9wdXRjKGNoYXIgYyk7CiAKZGlmZiAtLWdpdCBhL2RvYy9SRUFETUUuUE9TVCBiL2RvYy9SRUFETUUuUE9TVAppbmRleCBlZWIyMThkLi42ODE1ZDQ5IDEwMDY0NAotLS0gYS9kb2MvUkVBRE1FLlBPU1QKKysrIGIvZG9jL1JFQURNRS5QT1NUCkBAIC02NTksMTIgKzY1OSwxOSBAQAogMi4yLjIuMS4gSTJDIHRlc3QKIAogRm9yIHZlcmlmeWluZyB0aGUgSTJDIGJ1cywgYSBmdWxsIEkyQyBidXMgc2Nhbm5pbmcgd2lsbCBiZSBwZXJmb3JtZWQKLXVzaW5nIHRoZSBpMmNfcHJvYmUoKSByb3V0aW5lLiBJZiBhbnkgSTJDIGRldmljZSBpcyBmb3VuZCwgdGhlIHRlc3QKLXdpbGwgYmUgY29uc2lkZXJlZCBhcyBwYXNzZWQsIG90aGVyd2lzZSBmYWlsZWQuIFRoaXMgcGFydGljdWxhciB3YXkKLXdpbGwgYmUgdXNlZCBiZWNhdXNlIGl0IHByb3ZpZGVzIHRoZSBtb3N0IGNvbW1vbiBtZXRob2Qgb2YgdGVzdGluZy4KLUZvciBleGFtcGxlLCB1c2luZyB0aGUgaW50ZXJuYWwgbG9vcGJhY2sgbW9kZSBvZiB0aGUgQ1BNIEkyQwotY29udHJvbGxlciBmb3IgdGVzdGluZyB3b3VsZCBub3Qgd29yayBvbiBib2FyZHMgd2hlcmUgdGhlIHNvZnR3YXJlCi1JMkMgZHJpdmVyIChhbHNvIGtub3duIGFzIGJpdC1iYW5nZWQgZHJpdmVyKSBpcyB1c2VkLgordXNpbmcgdGhlIGkyY19wcm9iZSgpIHJvdXRpbmUuIElmIGEgYm9hcmQgZGVmaW5lcworQ09ORklHX1NZU19QT1NUX0kyQ19BRERSUyB0aGUgSTJDIHRlc3Qgd2lsbCBwYXNzIGlmIGFsbCBkZXZpY2VzCitsaXN0ZWQgaW4gQ09ORklHX1NZU19QT1NUX0kyQ19BRERSUyBhcmUgZm91bmQsIGFuZCBubyBhZGRpdGlvbmFsCitkZXZpY2VzIGFyZSBkZXRlY3RlZC4gIElmIENPTkZJR19TWVNfUE9TVF9JMkNfQUREUlMgaXMgbm90IGRlZmluZWQKK3RoZSB0ZXN0IHdpbGwgcGFzcyBpZiBhbnkgSTJDIGRldmljZSBpcyBmb3VuZC4KKworVGhlIENPTkZJR19TWVNfUE9TVF9JMkNfSUdOT1JFUyBkZWZpbmUgY2FuIGJlIHVzZWQgdG8gbGlzdCBJMkMKK2RldmljZXMgd2hpY2ggbWF5IG9yIG1heSBub3QgYmUgcHJlc2VudCB3aGVuIHVzaW5nCitDT05GSUdfU1lTX1BPU1RfSTJDX0FERFJTLiAgVGhlIEkyQyBQT1NUIHRlc3Qgd2lsbCBwYXNzIHJlZ2FyZGxlc3MKK2lmIHRoZSBkZXZpY2VzIGluIENPTkZJR19TWVNfUE9TVF9JMkNfSUdOT1JFUyBhcmUgZm91bmQgb3Igbm90LgorVGhpcyBpcyB1c2VmdWwgaW4gY2FzZXMgd2hlbiBJMkMgZGV2aWNlcyBhcmUgb3B0aW9uYWwgKGVnIG9uIGEKK2RhdWdodGVyY2FyZCB0aGF0IG1heSBvciBtYXkgbm90IGJlIHByZXNlbnQpIG9yIG5vdCBjcml0aWNhbAordG8gYm9hcmQgb3BlcmF0aW9uLgogCiAyLjIuMi4yLiBXYXRjaGRvZyB0aW1lciB0ZXN0CiAKZGlmZiAtLWdpdCBhL2RvYy9SRUFETUUuZnNsLWRkciBiL2RvYy9SRUFETUUuZnNsLWRkcgppbmRleCBlMTA4YTBkLi4xNjU3ZWY2IDEwMDY0NAotLS0gYS9kb2MvUkVBRE1FLmZzbC1kZHIKKysrIGIvZG9jL1JFQURNRS5mc2wtZGRyCkBAIC03OCw2ICs3OCwyMCBAQAogU3ludGF4IGlzOgogaHdjb25maWc9ZnNsX2RkcjphZGRyX2hhc2g9dHJ1ZQogCisKK01lbW9yeSB0ZXN0aW5nIG9wdGlvbnMgZm9yIG1wYzg1eHgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzEuIE1lbW9yeSB0ZXN0IGNhbiBiZSBkb25lIG9uY2UgVS1ib290IHByb21wdCBjb21lcyB1cCB1c2luZyBtdGVzdCwgb3IKKzIuIE1lbW9yeSB0ZXN0IGNhbiBiZSBkb25lIHdpdGggUG93ZXItT24tU2VsZi1UZXN0IGZ1bmN0aW9uLCBhY3RpdmF0ZWQgYXQKKyAgIGNvbXBpbGUgdGltZS4KKworICAgSW4gb3JkZXIgdG8gZW5hYmxlIHRoZSBQT1NUIG1lbW9yeSB0ZXN0LCBDT05GSUdfUE9TVCBuZWVkcyB0byBiZQorICAgZGVmaW5lZCBpbiBib2FyZCBjb25maWd1cmFpdG9uIGhlYWRlciBmaWxlLiBCeSBkZWZhdWx0LCBQT1NUIG1lbW9yeSB0ZXN0CisgICBwZXJmb3JtcyBhIGZhc3QgdGVzdC4gQSBzbG93IHRlc3QgY2FuIGJlIGVuYWJsZWQgYnkgY2hhbmdpbmcgdGhlIGZsYWcgYXQKKyAgIGNvbXBpbGluZyB0aW1lLiBUbyB0ZXN0IG1lbW9yeSBiaWdnZXIgdGhhbiAyR0IsIDM2QklUIHN1cHBvcnQgaXMgbmVlZGVkLgorICAgTWVtb3J5IGlzIHRlc3RlZCB3aXRoaW4gYSAyR0Igd2luZG93LiBUTEJzIGFyZSB1c2VkIHRvIG1hcCB0aGUgdmlydHVhbCAyR0IKKyAgIHdpbmRvdyB0byBwaHlzaWNhbCBhZGRyZXNzIHNvIHRoYXQgYWxsIHBoeXNpY2FsIG1lbW9yeSBjYW4gYmUgdGVzdGVkLgorCiBDb21iaW5hdGlvbiBvZiBod2NvbmZpZwogPT09PT09PT09PT09PT09PT09PT09PT0KIEh3Y29uZmlnIGNhbiBiZSBjb21iaW5lZCB3aXRoIG11bHRpcGxlIHBhcmFtZXRlcnMsIGZvciBleGFtcGxlLCBvbiBhIHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvZG9jL1JFQURNRS5zY3JhcHlhcmQgYi9kb2MvUkVBRE1FLnNjcmFweWFyZAppbmRleCBhNzA3YzZmLi40Mjg2NTU5IDEwMDY0NAotLS0gYS9kb2MvUkVBRE1FLnNjcmFweWFyZAorKysgYi9kb2MvUkVBRE1FLnNjcmFweWFyZApAQCAtMTEsNiArMTEsNyBAQAogCiBCb2FyZAlBcmNoCUNQVQlyZW1vdmVkCSAgICBDb21taXQJbGFzdCBrbm93biBtYWludGFpbmVyL2NvbnRhY3QKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitWb1ZQTi1HV18xMDBNSHoJcG93ZXJwYwlNUEM4MjYwIC0gMjAxMC0xMC0yNAlKdWVyZ2VuIFNlbGVudCA8ai5zZWxlbnRAZWxtZWcuZGU+CiBOQzY1MAlwb3dlcnBjCU1QQzg1MgkzMzNkODZkICAgMjAxMC0xMC0xOQlXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogQ1A4NTAJcG93ZXJwYwlNUEM4NTIJMzMzZDg2ZCAgIDIwMTAtMTAtMTkJV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KIGxvZ29kbAlBUk0JUFhBMnh4CTA1OWU3NzggICAyMDEwLTEwLTE4CUF1Z3VzdCBIb2VyYWVuZGwgPGF1Z3VzdC5ob2VyYW5kbEBnbXguYXQ+CmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9vbWFwMjR4eF9pMmMuYyBiL2RyaXZlcnMvaTJjL29tYXAyNHh4X2kyYy5jCmluZGV4IDNmZWJkMWYuLmZhYjQ5ZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL29tYXAyNHh4X2kyYy5jCisrKyBiL2RyaXZlcnMvaTJjL29tYXAyNHh4X2kyYy5jCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJvbWFwMjR4eF9pMmMuaCIKIAotI2RlZmluZSBJMkNfVElNRU9VVAkxMAorI2RlZmluZSBJMkNfVElNRU9VVAkxMDAwCiAKIHN0YXRpYyB2b2lkIHdhaXRfZm9yX2JiICh2b2lkKTsKIHN0YXRpYyB1MTYgd2FpdF9mb3JfcGluICh2b2lkKTsKQEAgLTE1OSw1OCArMTU5LDU2IEBACiAJLyogbm8gc3RvcCBiaXQgbmVlZGVkIGhlcmUgKi8KIAl3cml0ZXcgKEkyQ19DT05fRU4gfCBJMkNfQ09OX01TVCB8IEkyQ19DT05fU1RUIHwgSTJDX0NPTl9UUlgsICZpMmNfYmFzZS0+Y29uKTsKIAotCXN0YXR1cyA9IHdhaXRfZm9yX3BpbiAoKTsKLQotCWlmIChzdGF0dXMgJiBJMkNfU1RBVF9YUkRZKSB7Ci0JCS8qIEltcG9ydGFudDogaGF2ZSB0byB1c2UgYnl0ZSBhY2Nlc3MgKi8KLQkJd3JpdGViIChyZWdvZmZzZXQsICZpMmNfYmFzZS0+ZGF0YSk7Ci0JCXVkZWxheSAoMjAwMDApOwotCQlpZiAocmVhZHcgKCZpMmNfYmFzZS0+c3RhdCkgJiBJMkNfU1RBVF9OQUNLKSB7CisJLyogc2VuZCByZWdpc3RlciBvZmZzZXQgKi8KKwl3aGlsZSAoMSkgeworCQlzdGF0dXMgPSB3YWl0X2Zvcl9waW4oKTsKKwkJaWYgKHN0YXR1cyA9PSAwIHx8IHN0YXR1cyAmIEkyQ19TVEFUX05BQ0spIHsKIAkJCWkyY19lcnJvciA9IDE7CisJCQlnb3RvIHJlYWRfZXhpdDsKIAkJfQotCX0gZWxzZSB7Ci0JCWkyY19lcnJvciA9IDE7CisJCWlmIChzdGF0dXMgJiBJMkNfU1RBVF9YUkRZKSB7CisJCQkvKiBJbXBvcnRhbnQ6IGhhdmUgdG8gdXNlIGJ5dGUgYWNjZXNzICovCisJCQl3cml0ZWIocmVnb2Zmc2V0LCAmaTJjX2Jhc2UtPmRhdGEpOworCQkJd3JpdGV3KEkyQ19TVEFUX1hSRFksICZpMmNfYmFzZS0+c3RhdCk7CisJCX0KKwkJaWYgKHN0YXR1cyAmIEkyQ19TVEFUX0FSRFkpIHsKKwkJCXdyaXRldyhJMkNfU1RBVF9BUkRZLCAmaTJjX2Jhc2UtPnN0YXQpOworCQkJYnJlYWs7CisJCX0KIAl9CiAKLQlpZiAoIWkyY19lcnJvcikgewotCQl3cml0ZXcgKEkyQ19DT05fRU4sICZpMmNfYmFzZS0+Y29uKTsKLQkJd2hpbGUgKHJlYWR3KCZpMmNfYmFzZS0+c3RhdCkgJgotCQkJKEkyQ19TVEFUX1hSRFkgfCBJMkNfU1RBVF9BUkRZKSkgewotCQkJdWRlbGF5ICgxMDAwMCk7Ci0JCQkvKiBIYXZlIHRvIGNsZWFyIHBlbmRpbmcgaW50ZXJydXB0IHRvIGNsZWFyIEkyQ19TVEFUICovCi0JCQl3cml0ZXcgKDB4RkZGRiwgJmkyY19iYXNlLT5zdGF0KTsKKwkvKiBzZXQgc2xhdmUgYWRkcmVzcyAqLworCXdyaXRldyhkZXZhZGRyLCAmaTJjX2Jhc2UtPnNhKTsKKwkvKiByZWFkIG9uZSBieXRlIGZyb20gc2xhdmUgKi8KKwl3cml0ZXcoMSwgJmkyY19iYXNlLT5jbnQpOworCS8qIG5lZWQgc3RvcCBiaXQgaGVyZSAqLworCXdyaXRldyhJMkNfQ09OX0VOIHwgSTJDX0NPTl9NU1QgfAorCQlJMkNfQ09OX1NUVCB8IEkyQ19DT05fU1RQLAorCQkmaTJjX2Jhc2UtPmNvbik7CisKKwkvKiByZWNlaXZlIGRhdGEgKi8KKwl3aGlsZSAoMSkgeworCQlzdGF0dXMgPSB3YWl0X2Zvcl9waW4oKTsKKwkJaWYgKHN0YXR1cyA9PSAwIHx8IHN0YXR1cyAmIEkyQ19TVEFUX05BQ0spIHsKKwkJCWkyY19lcnJvciA9IDE7CisJCQlnb3RvIHJlYWRfZXhpdDsKIAkJfQotCi0JCS8qIHNldCBzbGF2ZSBhZGRyZXNzICovCi0JCXdyaXRldyAoZGV2YWRkciwgJmkyY19iYXNlLT5zYSk7Ci0JCS8qIHJlYWQgb25lIGJ5dGUgZnJvbSBzbGF2ZSAqLwotCQl3cml0ZXcgKDEsICZpMmNfYmFzZS0+Y250KTsKLQkJLyogbmVlZCBzdG9wIGJpdCBoZXJlICovCi0JCXdyaXRldyAoSTJDX0NPTl9FTiB8IEkyQ19DT05fTVNUIHwgSTJDX0NPTl9TVFQgfCBJMkNfQ09OX1NUUCwKLQkJCSZpMmNfYmFzZS0+Y29uKTsKLQotCQlzdGF0dXMgPSB3YWl0X2Zvcl9waW4gKCk7CiAJCWlmIChzdGF0dXMgJiBJMkNfU1RBVF9SUkRZKSB7CiAjaWYgZGVmaW5lZChDT05GSUdfT01BUDI0M1gpIHx8IGRlZmluZWQoQ09ORklHX09NQVAzNFhYKSB8fCBcCiAgICAgZGVmaW5lZChDT05GSUdfT01BUDQ0WFgpCi0JCQkqdmFsdWUgPSByZWFkYiAoJmkyY19iYXNlLT5kYXRhKTsKKwkJCSp2YWx1ZSA9IHJlYWRiKCZpMmNfYmFzZS0+ZGF0YSk7CiAjZWxzZQotCQkJKnZhbHVlID0gcmVhZHcgKCZpMmNfYmFzZS0+ZGF0YSk7CisJCQkqdmFsdWUgPSByZWFkdygmaTJjX2Jhc2UtPmRhdGEpOwogI2VuZGlmCi0JCQl1ZGVsYXkgKDIwMDAwKTsKLQkJfSBlbHNlIHsKLQkJCWkyY19lcnJvciA9IDE7CisJCQl3cml0ZXcoSTJDX1NUQVRfUlJEWSwgJmkyY19iYXNlLT5zdGF0KTsKIAkJfQotCi0JCWlmICghaTJjX2Vycm9yKSB7Ci0JCQl3cml0ZXcgKEkyQ19DT05fRU4sICZpMmNfYmFzZS0+Y29uKTsKLQkJCXdoaWxlIChyZWFkdyAoJmkyY19iYXNlLT5zdGF0KSAmCi0JCQkJKEkyQ19TVEFUX1JSRFkgfCBJMkNfU1RBVF9BUkRZKSkgewotCQkJCXVkZWxheSAoMTAwMDApOwotCQkJCXdyaXRldyAoMHhGRkZGLCAmaTJjX2Jhc2UtPnN0YXQpOwotCQkJfQorCQlpZiAoc3RhdHVzICYgSTJDX1NUQVRfQVJEWSkgeworCQkJd3JpdGV3KEkyQ19TVEFUX0FSRFksICZpMmNfYmFzZS0+c3RhdCk7CisJCQlicmVhazsKIAkJfQogCX0KKworcmVhZF9leGl0OgogCWZsdXNoX2ZpZm8oKTsKIAl3cml0ZXcgKDB4RkZGRiwgJmkyY19iYXNlLT5zdGF0KTsKIAl3cml0ZXcgKDAsICZpMmNfYmFzZS0+Y250KTsKQEAgLTIyMCw3ICsyMTgsNyBAQAogc3RhdGljIGludCBpMmNfd3JpdGVfYnl0ZSAodTggZGV2YWRkciwgdTggcmVnb2Zmc2V0LCB1OCB2YWx1ZSkKIHsKIAlpbnQgaTJjX2Vycm9yID0gMDsKLQl1MTYgc3RhdHVzLCBzdGF0OworCXUxNiBzdGF0dXM7CiAKIAkvKiB3YWl0IHVudGlsIGJ1cyBub3QgYnVzeSAqLwogCXdhaXRfZm9yX2JiICgpOwpAQCAtMjMzLDQ5ICsyMzEsNTUgQEAKIAl3cml0ZXcgKEkyQ19DT05fRU4gfCBJMkNfQ09OX01TVCB8IEkyQ19DT05fU1RUIHwgSTJDX0NPTl9UUlggfAogCQlJMkNfQ09OX1NUUCwgJmkyY19iYXNlLT5jb24pOwogCi0JLyogd2FpdCB1bnRpbCBzdGF0ZSBjaGFuZ2UgKi8KLQlzdGF0dXMgPSB3YWl0X2Zvcl9waW4gKCk7Ci0KLQlpZiAoc3RhdHVzICYgSTJDX1NUQVRfWFJEWSkgeworCXdoaWxlICgxKSB7CisJCXN0YXR1cyA9IHdhaXRfZm9yX3BpbigpOworCQlpZiAoc3RhdHVzID09IDAgfHwgc3RhdHVzICYgSTJDX1NUQVRfTkFDSykgeworCQkJaTJjX2Vycm9yID0gMTsKKwkJCWdvdG8gd3JpdGVfZXhpdDsKKwkJfQorCQlpZiAoc3RhdHVzICYgSTJDX1NUQVRfWFJEWSkgewogI2lmIGRlZmluZWQoQ09ORklHX09NQVAyNDNYKSB8fCBkZWZpbmVkKENPTkZJR19PTUFQMzRYWCkgfHwgXAogICAgIGRlZmluZWQoQ09ORklHX09NQVA0NFhYKQotCQkvKiBzZW5kIG91dCAxIGJ5dGUgKi8KLQkJd3JpdGViIChyZWdvZmZzZXQsICZpMmNfYmFzZS0+ZGF0YSk7Ci0JCXdyaXRldyAoSTJDX1NUQVRfWFJEWSwgJmkyY19iYXNlLT5zdGF0KTsKKwkJCS8qIHNlbmQgcmVnaXN0ZXIgb2Zmc2V0ICovCisJCQl3cml0ZWIocmVnb2Zmc2V0LCAmaTJjX2Jhc2UtPmRhdGEpOworCQkJd3JpdGV3KEkyQ19TVEFUX1hSRFksICZpMmNfYmFzZS0+c3RhdCk7CiAKLQkJc3RhdHVzID0gd2FpdF9mb3JfcGluICgpOwotCQlpZiAoKHN0YXR1cyAmIEkyQ19TVEFUX1hSRFkpKSB7Ci0JCQkvKiBzZW5kIG91dCBuZXh0IDEgYnl0ZSAqLwotCQkJd3JpdGViICh2YWx1ZSwgJmkyY19iYXNlLT5kYXRhKTsKLQkJCXdyaXRldyAoSTJDX1NUQVRfWFJEWSwgJmkyY19iYXNlLT5zdGF0KTsKLQkJfSBlbHNlIHsKLQkJCWkyY19lcnJvciA9IDE7Ci0JCX0KKwkJCXdoaWxlICgxKSB7CisJCQkJc3RhdHVzID0gd2FpdF9mb3JfcGluKCk7CisJCQkJaWYgKHN0YXR1cyA9PSAwIHx8IHN0YXR1cyAmIEkyQ19TVEFUX05BQ0spIHsKKwkJCQkJaTJjX2Vycm9yID0gMTsKKwkJCQkJZ290byB3cml0ZV9leGl0OworCQkJCX0KKwkJCQlpZiAoc3RhdHVzICYgSTJDX1NUQVRfWFJEWSkgeworCQkJCQkvKiBzZW5kIGRhdGEgKi8KKwkJCQkJd3JpdGViKHZhbHVlLCAmaTJjX2Jhc2UtPmRhdGEpOworCQkJCQl3cml0ZXcoSTJDX1NUQVRfWFJEWSwgJmkyY19iYXNlLT5zdGF0KTsKKwkJCQl9CisJCQkJaWYgKHN0YXR1cyAmIEkyQ19TVEFUX0FSRFkpIHsKKwkJCQkJd3JpdGV3KEkyQ19TVEFUX0FSRFksICZpMmNfYmFzZS0+c3RhdCk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWJyZWFrOwogI2Vsc2UKLQkJLyogc2VuZCBvdXQgdHdvIGJ5dGVzICovCi0JCXdyaXRldyAoKHZhbHVlIDw8IDgpICsgcmVnb2Zmc2V0LCAmaTJjX2Jhc2UtPmRhdGEpOworCQkJLyogc2VuZCBvdXQgdHdvIGJ5dGVzICovCisJCQl3cml0ZXcoKHZhbHVlIDw8IDgpICsgcmVnb2Zmc2V0LCAmaTJjX2Jhc2UtPmRhdGEpOworCQkJd3JpdGV3KEkyQ19TVEFUX1hSRFksICZpMmNfYmFzZS0+c3RhdCk7CiAjZW5kaWYKLQkJLyogbXVzdCBoYXZlIGVub3VnaCBkZWxheSB0byBhbGxvdyBCQiBiaXQgdG8gZ28gbG93ICovCi0JCXVkZWxheSAoNTAwMDApOwotCQlpZiAocmVhZHcgKCZpMmNfYmFzZS0+c3RhdCkgJiBJMkNfU1RBVF9OQUNLKSB7Ci0JCQlpMmNfZXJyb3IgPSAxOwogCQl9Ci0JfSBlbHNlIHsKKwkJaWYgKHN0YXR1cyAmIEkyQ19TVEFUX0FSRFkpIHsKKwkJCXdyaXRldyhJMkNfU1RBVF9BUkRZLCAmaTJjX2Jhc2UtPnN0YXQpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwl3YWl0X2Zvcl9iYigpOworCisJc3RhdHVzID0gcmVhZHcoJmkyY19iYXNlLT5zdGF0KTsKKwlpZiAoc3RhdHVzICYgSTJDX1NUQVRfTkFDSykKIAkJaTJjX2Vycm9yID0gMTsKLQl9CiAKLQlpZiAoIWkyY19lcnJvcikgewotCQlpbnQgZW91dCA9IDIwMDsKLQotCQl3cml0ZXcgKEkyQ19DT05fRU4sICZpMmNfYmFzZS0+Y29uKTsKLQkJd2hpbGUgKChzdGF0ID0gcmVhZHcgKCZpMmNfYmFzZS0+c3RhdCkpIHx8IChyZWFkdyAoJmkyY19iYXNlLT5jb24pICYgSTJDX0NPTl9NU1QpKSB7Ci0JCQl1ZGVsYXkgKDEwMDApOwotCQkJLyogaGF2ZSB0byByZWFkIHRvIGNsZWFyIGludHJydXB0ICovCi0JCQl3cml0ZXcgKDB4RkZGRiwgJmkyY19iYXNlLT5zdGF0KTsKLQkJCWlmKC0tZW91dCA9PSAwKSAvKiBiZXR0ZXIgbGVhdmUgd2l0aCBlcnJvciB0aGFuIGhhbmcgKi8KLQkJCQlicmVhazsKLQkJfQotCX0KK3dyaXRlX2V4aXQ6CiAJZmx1c2hfZmlmbygpOwogCXdyaXRldyAoMHhGRkZGLCAmaTJjX2Jhc2UtPnN0YXQpOwogCXdyaXRldyAoMCwgJmkyY19iYXNlLT5jbnQpOwpAQCAtMzA2LDYgKzMxMCw3IEBACiAKIGludCBpMmNfcHJvYmUgKHVjaGFyIGNoaXApCiB7CisJdTE2IHN0YXR1czsKIAlpbnQgcmVzID0gMTsgLyogZGVmYXVsdCA9IGZhaWwgKi8KIAogCWlmIChjaGlwID09IHJlYWR3ICgmaTJjX2Jhc2UtPm9hKSkgewpAQCAtMzIxLDE5ICszMjYsMzcgQEAKIAl3cml0ZXcgKGNoaXAsICZpMmNfYmFzZS0+c2EpOwogCS8qIHN0b3AgYml0IG5lZWRlZCBoZXJlICovCiAJd3JpdGV3IChJMkNfQ09OX0VOIHwgSTJDX0NPTl9NU1QgfCBJMkNfQ09OX1NUVCB8IEkyQ19DT05fU1RQLCAmaTJjX2Jhc2UtPmNvbik7Ci0JLyogZW5vdWdoIGRlbGF5IGZvciB0aGUgTkFDSyBiaXQgc2V0ICovCi0JdWRlbGF5ICg1MDAwMCk7CiAKLQlpZiAoIShyZWFkdyAoJmkyY19iYXNlLT5zdGF0KSAmIEkyQ19TVEFUX05BQ0spKSB7Ci0JCXJlcyA9IDA7ICAgICAgLyogc3VjY2VzcyBjYXNlICovCi0JCWZsdXNoX2ZpZm8oKTsKLQkJd3JpdGV3KDB4RkZGRiwgJmkyY19iYXNlLT5zdGF0KTsKLQl9IGVsc2UgewotCQl3cml0ZXcoMHhGRkZGLCAmaTJjX2Jhc2UtPnN0YXQpOwkgLyogZmFpbHVlLCBjbGVhciBzb3VyY2VzKi8KLQkJd3JpdGV3IChyZWFkdyAoJmkyY19iYXNlLT5jb24pIHwgSTJDX0NPTl9TVFAsICZpMmNfYmFzZS0+Y29uKTsgLyogZmluaXNoIHVwIHhmZXIgKi8KLQkJdWRlbGF5KDIwMDAwKTsKLQkJd2FpdF9mb3JfYmIgKCk7CisJd2hpbGUgKDEpIHsKKwkJc3RhdHVzID0gd2FpdF9mb3JfcGluKCk7CisJCWlmIChzdGF0dXMgPT0gMCB8fCBzdGF0dXMgJiBJMkNfU1RBVF9BTCkgeworCQkJcmVzID0gMTsKKwkJCWdvdG8gcHJvYmVfZXhpdDsKKwkJfQorCQlpZiAoc3RhdHVzICYgSTJDX1NUQVRfTkFDSykgeworCQkJcmVzID0gMTsKKwkJCXdyaXRldygweGZmLCAmaTJjX2Jhc2UtPnN0YXQpOworCQkJd3JpdGV3IChyZWFkdyAoJmkyY19iYXNlLT5jb24pIHwgSTJDX0NPTl9TVFAsICZpMmNfYmFzZS0+Y29uKTsKKwkJCXdhaXRfZm9yX2JiICgpOworCQkJYnJlYWs7CisJCX0KKwkJaWYgKHN0YXR1cyAmIEkyQ19TVEFUX0FSRFkpIHsKKwkJCXdyaXRldyhJMkNfU1RBVF9BUkRZLCAmaTJjX2Jhc2UtPnN0YXQpOworCQkJYnJlYWs7CisJCX0KKwkJaWYgKHN0YXR1cyAmIEkyQ19TVEFUX1JSRFkpIHsKKwkJCXJlcyA9IDA7CisjaWYgZGVmaW5lZChDT05GSUdfT01BUDI0M1gpIHx8IGRlZmluZWQoQ09ORklHX09NQVAzNFhYKSB8fCBcCisgICAgZGVmaW5lZChDT05GSUdfT01BUDQ0WFgpCisJCQlyZWFkYigmaTJjX2Jhc2UtPmRhdGEpOworI2Vsc2UKKwkJCXJlYWR3KCZpMmNfYmFzZS0+ZGF0YSk7CisjZW5kaWYKKwkJCXdyaXRldyhJMkNfU1RBVF9SUkRZLCAmaTJjX2Jhc2UtPnN0YXQpOworCQl9CiAJfQorCitwcm9iZV9leGl0OgogCWZsdXNoX2ZpZm8oKTsKIAl3cml0ZXcgKDAsICZpMmNfYmFzZS0+Y250KTsgLyogZG9uJ3QgYWxsb3cgYW55IG1vcmUgZGF0YSBpbi4uLndlIGRvbid0IHdhbnQgaXQuKi8KIAl3cml0ZXcoMHhGRkZGLCAmaTJjX2Jhc2UtPnN0YXQpOwpAQCAtMzkyLDEzICs0MTUsMTMgQEAKIAogc3RhdGljIHZvaWQgd2FpdF9mb3JfYmIgKHZvaWQpCiB7Ci0JaW50IHRpbWVvdXQgPSAxMDsKKwlpbnQgdGltZW91dCA9IEkyQ19USU1FT1VUOwogCXUxNiBzdGF0OwogCiAJd3JpdGV3KDB4RkZGRiwgJmkyY19iYXNlLT5zdGF0KTsJIC8qIGNsZWFyIGN1cnJlbnQgaW50ZXJydXRzLi4uKi8KIAl3aGlsZSAoKHN0YXQgPSByZWFkdyAoJmkyY19iYXNlLT5zdGF0KSAmIEkyQ19TVEFUX0JCKSAmJiB0aW1lb3V0LS0pIHsKIAkJd3JpdGV3IChzdGF0LCAmaTJjX2Jhc2UtPnN0YXQpOwotCQl1ZGVsYXkgKDUwMDAwKTsKKwkJdWRlbGF5KDEwMDApOwogCX0KIAogCWlmICh0aW1lb3V0IDw9IDApIHsKQEAgLTQxMSw3ICs0MzQsNyBAQAogc3RhdGljIHUxNiB3YWl0X2Zvcl9waW4gKHZvaWQpCiB7CiAJdTE2IHN0YXR1czsKLQlpbnQgdGltZW91dCA9IDEwOworCWludCB0aW1lb3V0ID0gSTJDX1RJTUVPVVQ7CiAKIAlkbyB7CiAJCXVkZWxheSAoMTAwMCk7CkBAIC00MjQsOCArNDQ3LDEwIEBACiAJaWYgKHRpbWVvdXQgPD0gMCkgewogCQlwcmludGYgKCJ0aW1lZCBvdXQgaW4gd2FpdF9mb3JfcGluOiBJMkNfU1RBVD0leFxuIiwKIAkJCXJlYWR3ICgmaTJjX2Jhc2UtPnN0YXQpKTsKLQkJCXdyaXRldygweEZGRkYsICZpMmNfYmFzZS0+c3RhdCk7Ci19CisJCXdyaXRldygweEZGRkYsICZpMmNfYmFzZS0+c3RhdCk7CisJCXN0YXR1cyA9IDA7CisJfQorCiAJcmV0dXJuIHN0YXR1czsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvY2ZpX2ZsYXNoLmMgYi9kcml2ZXJzL210ZC9jZmlfZmxhc2guYwppbmRleCA3OTg5MDJmLi5jOTJjN2E3IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9jZmlfZmxhc2guYworKysgYi9kcml2ZXJzL210ZC9jZmlfZmxhc2guYwpAQCAtODUsNiArODUsMTcgQEAKIHBoeXNfYWRkcl90IGNmaV9mbGFzaF9iYW5rX2FkZHIoaW50IGkpCiAJX19hdHRyaWJ1dGVfXygod2VhaywgYWxpYXMoIl9fY2ZpX2ZsYXNoX2JhbmtfYWRkciIpKSk7CiAKK3N0YXRpYyB1bnNpZ25lZCBsb25nIF9fY2ZpX2ZsYXNoX2Jhbmtfc2l6ZShpbnQgaSkKK3sKKyNpZmRlZiBDT05GSUdfU1lTX0ZMQVNIX0JBTktTX1NJWkVTCisJcmV0dXJuICgodW5zaWduZWQgbG9uZyBbXSlDT05GSUdfU1lTX0ZMQVNIX0JBTktTX1NJWkVTKVtpXTsKKyNlbHNlCisJcmV0dXJuIDA7CisjZW5kaWYKK30KK3Vuc2lnbmVkIGxvbmcgY2ZpX2ZsYXNoX2Jhbmtfc2l6ZShpbnQgaSkKKwlfX2F0dHJpYnV0ZV9fKCh3ZWFrLCBhbGlhcygiX19jZmlfZmxhc2hfYmFua19zaXplIikpKTsKKwogc3RhdGljIHZvaWQgX19mbGFzaF93cml0ZTgodTggdmFsdWUsIHZvaWQgKmFkZHIpCiB7CiAJX19yYXdfd3JpdGViKHZhbHVlLCBhZGRyKTsKQEAgLTE4MjYsNyArMTgzNyw3IEBACiAgKiBUaGUgZm9sbG93aW5nIGNvZGUgY2Fubm90IGJlIHJ1biBmcm9tIEZMQVNIIQogICoKICAqLwotdWxvbmcgZmxhc2hfZ2V0X3NpemUgKHBoeXNfYWRkcl90IGJhc2UsIGludCBiYW5rbnVtKQordWxvbmcgZmxhc2hfZ2V0X3NpemUgKHBoeXNfYWRkcl90IGJhc2UsIGludCBiYW5rbnVtLCB1bnNpZ25lZCBsb25nIG1heF9zaXplKQogewogCWZsYXNoX2luZm9fdCAqaW5mbyA9ICZmbGFzaF9pbmZvW2JhbmtudW1dOwogCWludCBpLCBqOwpAQCAtMTkxNSw2ICsxOTI2LDEzIEBACiAJCWRlYnVnICgic2l6ZV9yYXRpbyAlZCBwb3J0ICVkIGJpdHMgY2hpcCAlZCBiaXRzXG4iLAogCQkgICAgICAgc2l6ZV9yYXRpbywgaW5mby0+cG9ydHdpZHRoIDw8IENGSV9GTEFTSF9TSElGVF9XSURUSCwKIAkJICAgICAgIGluZm8tPmNoaXB3aWR0aCA8PCBDRklfRkxBU0hfU0hJRlRfV0lEVEgpOworCQlpbmZvLT5zaXplID0gMSA8PCBxcnkuZGV2X3NpemU7CisJCS8qIG11bHRpcGx5IHRoZSBzaXplIGJ5IHRoZSBudW1iZXIgb2YgY2hpcHMgKi8KKwkJaW5mby0+c2l6ZSAqPSBzaXplX3JhdGlvOworCQlpZiAobWF4X3NpemUgJiYgKGluZm8tPnNpemUgPiBtYXhfc2l6ZSkpIHsKKwkJCWRlYnVnKCJbdHJ1bmNhdGVkIGZyb20gJWxkTWlCXSIsIGluZm8tPnNpemUgPj4gMjApOworCQkJaW5mby0+c2l6ZSA9IG1heF9zaXplOworCQl9CiAJCWRlYnVnICgiZm91bmQgJWQgZXJhc2UgcmVnaW9uc1xuIiwgbnVtX2VyYXNlX3JlZ2lvbnMpOwogCQlzZWN0X2NudCA9IDA7CiAJCXNlY3RvciA9IGJhc2U7CkBAIC0xOTM1LDYgKzE5NTMsOCBAQAogCQkJZGVidWcgKCJlcmFzZV9yZWdpb25fY291bnQgPSAlZCBlcmFzZV9yZWdpb25fc2l6ZSA9ICVkXG4iLAogCQkJCWVyYXNlX3JlZ2lvbl9jb3VudCwgZXJhc2VfcmVnaW9uX3NpemUpOwogCQkJZm9yIChqID0gMDsgaiA8IGVyYXNlX3JlZ2lvbl9jb3VudDsgaisrKSB7CisJCQkJaWYgKHNlY3RvciAtIGJhc2UgPj0gaW5mby0+c2l6ZSkKKwkJCQkJYnJlYWs7CiAJCQkJaWYgKHNlY3RfY250ID49IENPTkZJR19TWVNfTUFYX0ZMQVNIX1NFQ1QpIHsKIAkJCQkJcHJpbnRmKCJFUlJPUjogdG9vIG1hbnkgZmxhc2ggc2VjdG9yc1xuIik7CiAJCQkJCWJyZWFrOwpAQCAtMTk2OCw5ICsxOTg4LDYgQEAKIAkJfQogCiAJCWluZm8tPnNlY3Rvcl9jb3VudCA9IHNlY3RfY250OwotCQlpbmZvLT5zaXplID0gMSA8PCBxcnkuZGV2X3NpemU7Ci0JCS8qIG11bHRpcGx5IHRoZSBzaXplIGJ5IHRoZSBudW1iZXIgb2YgY2hpcHMgKi8KLQkJaW5mby0+c2l6ZSAqPSBzaXplX3JhdGlvOwogCQlpbmZvLT5idWZmZXJfc2l6ZSA9IDEgPDwgbGUxNl90b19jcHUocXJ5Lm1heF9idWZfd3JpdGVfc2l6ZSk7CiAJCXRtcCA9IDEgPDwgcXJ5LmJsb2NrX2VyYXNlX3RpbWVvdXRfdHlwOwogCQlpbmZvLT5lcmFzZV9ibGtfdG91dCA9IHRtcCAqCkBAIC0yMDI2LDcgKzIwNDMsOCBAQAogCQlmbGFzaF9pbmZvW2ldLmZsYXNoX2lkID0gRkxBU0hfVU5LTk9XTjsKIAogCQlpZiAoIWZsYXNoX2RldGVjdF9sZWdhY3koY2ZpX2ZsYXNoX2JhbmtfYWRkcihpKSwgaSkpCi0JCQlmbGFzaF9nZXRfc2l6ZShjZmlfZmxhc2hfYmFua19hZGRyKGkpLCBpKTsKKwkJCWZsYXNoX2dldF9zaXplKGNmaV9mbGFzaF9iYW5rX2FkZHIoaSksIGksCisJCQkJCWNmaV9mbGFzaF9iYW5rX3NpemUoaSkpOwogCQlzaXplICs9IGZsYXNoX2luZm9baV0uc2l6ZTsKIAkJaWYgKGZsYXNoX2luZm9baV0uZmxhc2hfaWQgPT0gRkxBU0hfVU5LTk9XTikgewogI2lmbmRlZiBDT05GSUdfU1lTX0ZMQVNIX1FVSUVUX1RFU1QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VsaTUyNnguYyBiL2RyaXZlcnMvbmV0L3VsaTUyNnguYwppbmRleCA1NmVlZTdiLi5kNjI2ZDY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91bGk1MjZ4LmMKKysrIGIvZHJpdmVycy9uZXQvdWxpNTI2eC5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICogQ29weXJpZ2h0IDIwMDcsIDIwMTAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KICAqCiAgKiBBdXRob3I6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4sIFNlcCwgMjAwNwogICoKQEAgLTMxMSw3ICszMTEsOCBAQAogCQkJaSkpOwogCiAJLyogU2V0IE5vZGUgYWRkcmVzcyAqLwotCWlmICgoKHUxNiAqKSBkYi0+c3JvbSlbMF0gPT0gMHhmZmZmIHx8ICgodTE2ICopIGRiLT5zcm9tKVswXSA9PSAwKQorCWlmICgoKGRiLT5zcm9tWzBdID09IDB4ZmYpICYmIChkYi0+c3JvbVsxXSA9PSAweGZmKSkgfHwKKwkgICAgKChkYi0+c3JvbVswXSA9PSAweDAwKSAmJiAoZGItPnNyb21bMV0gPT0gMHgwMCkpKQogCS8qIFNST00gYWJzZW50LCBzbyB3cml0ZSBNQUMgYWRkcmVzcyB0byBJRCBUYWJsZSAqLwogCQlzZXRfbWFjX2FkZHIoZGV2KTsKIAllbHNlIHsJCS8qRXhpc3QgU1JPTSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9mc2xfcGNpX2luaXQuYyBiL2RyaXZlcnMvcGNpL2ZzbF9wY2lfaW5pdC5jCmluZGV4IDAwMWU2ZWIuLjFmMDIxMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2ZzbF9wY2lfaW5pdC5jCisrKyBiL2RyaXZlcnMvcGNpL2ZzbF9wY2lfaW5pdC5jCkBAIC05MSw2ICs5MSw5IEBACiB7CiAJdm9sYXRpbGUgY2Nzcl9mc2xfcGNpX3QgKnBjaSA9IChjY3NyX2ZzbF9wY2lfdCAqKSBhZGRyOwogCisJLyogUmVzZXQgaG9zZSB0byBtYWtlIHN1cmUgaXRzIGluIGEgY2xlYW4gc3RhdGUgKi8KKwltZW1zZXQoaG9zZSwgMCwgc2l6ZW9mKHN0cnVjdCBwY2lfY29udHJvbGxlcikpOworCiAJcGNpX3NldHVwX2luZGlyZWN0KGhvc2UsICh1MzIpJnBjaS0+Y2ZnX2FkZHIsICh1MzIpJnBjaS0+Y2ZnX2RhdGEpOwogCiAJcmV0dXJuIGZzbF9pc19wY2lfYWdlbnQoaG9zZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wY2kuYyBiL2RyaXZlcnMvcGNpL3BjaS5jCmluZGV4IGNkNjRhODcuLjg0ODc0NmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3BjaS5jCisrKyBiL2RyaXZlcnMvcGNpL3BjaS5jCkBAIC0xMzksNyArMTM5LDcgQEAKICAqCiAgKi8KIAotc3RhdGljIHN0cnVjdCBwY2lfY29udHJvbGxlciogaG9zZV9oZWFkID0gTlVMTDsKK3N0YXRpYyBzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIqIGhvc2VfaGVhZDsKIAogdm9pZCBwY2lfcmVnaXN0ZXJfaG9zZShzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIqIGhvc2UpCiB7CkBAIC02NDAsNiArNjQwLDggQEAKIAl9CiAjZW5kaWYgLyogQ09ORklHX1BDSV9CT09UREVMQVkgKi8KIAorCWhvc2VfaGVhZCA9IE5VTEw7CisKIAkvKiBub3cgY2FsbCBib2FyZCBzcGVjaWZpYyBwY2lfaW5pdCgpLi4uICovCiAJcGNpX2luaXRfYm9hcmQoKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcWUvdWVjLmMgYi9kcml2ZXJzL3FlL3VlYy5jCmluZGV4IDQ4MDMzZDcuLjI4MmFiMjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcWUvdWVjLmMKKysrIGIvZHJpdmVycy9xZS91ZWMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwOSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KICAqCiAgKiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICoKQEAgLTMyNCw5ICszMjQsOSBAQAogfQogCiBzdGF0aWMgaW50IHVlY19zZXRfbWFjX2lmX21vZGUodWVjX3ByaXZhdGVfdCAqdWVjLAotCQllbmV0X2ludGVyZmFjZV90eXBlX2UgaWZfbW9kZSwgaW50IHNwZWVkKQorCQllbnVtIGZzbF9waHlfZW5ldF9pZiBpZl9tb2RlLCBpbnQgc3BlZWQpCiB7Ci0JZW5ldF9pbnRlcmZhY2VfdHlwZV9lCWVuZXRfaWZfbW9kZTsKKwllbnVtIGZzbF9waHlfZW5ldF9pZgllbmV0X2lmX21vZGU7CiAJdWVjX2luZm9fdAkJKnVlY19pbmZvOwogCXVlY190CQkJKnVlY19yZWdzOwogCXUzMgkJCXVwc21yOwpAQCAtNTIxLDcgKzUyMSw3IEBACiAJc3RydWN0IHVlY19taWlfaW5mbwkqbWlpX2luZm8gPSB1ZWMtPm1paV9pbmZvOwogCiAJZXh0ZXJuIHZvaWQgY2hhbmdlX3BoeV9pbnRlcmZhY2VfbW9kZShzdHJ1Y3QgZXRoX2RldmljZSAqZGV2LAotCQkJCSBlbmV0X2ludGVyZmFjZV90eXBlX2UgbW9kZSwgaW50IHNwZWVkKTsKKwkJCQkgZW51bSBmc2xfcGh5X2VuZXRfaWYgbW9kZSwgaW50IHNwZWVkKTsKIAl1ZWNfcmVncyA9IHVlYy0+dWVjX3JlZ3M7CiAKIAlpZiAobWlpX2luZm8tPmxpbmspIHsKQEAgLTUzOSw3ICs1MzksNyBAQAogCQl9CiAKIAkJaWYgKG1paV9pbmZvLT5zcGVlZCAhPSB1ZWMtPm9sZHNwZWVkKSB7Ci0JCQllbmV0X2ludGVyZmFjZV90eXBlX2UJbW9kZSA9IFwKKwkJCWVudW0gZnNsX3BoeV9lbmV0X2lmCW1vZGUgPSBcCiAJCQkJdWVjLT51ZWNfaW5mby0+ZW5ldF9pbnRlcmZhY2VfdHlwZTsKIAkJCWlmICh1ZWMtPnVlY19pbmZvLT51Zl9pbmZvLmV0aF90eXBlID09IEdJR0FfRVRIKSB7CiAJCQkJc3dpdGNoIChtaWlfaW5mby0+c3BlZWQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcWUvdWVjLmggYi9kcml2ZXJzL3FlL3VlYy5oCmluZGV4IDJhOWUyZGMuLjk0ZWI5YTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcWUvdWVjLmgKKysrIGIvZHJpdmVycy9xZS91ZWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwOSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KICAqCiAgKiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICogYmFzZWQgb24gc291cmNlIGNvZGUgb2YgU2hsb21pIEdyaWRpc2gKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgInFlLmgiCiAjaW5jbHVkZSAidWNjZi5oIgorI2luY2x1ZGUgPGFzbS9mc2xfZW5ldC5oPgogCiAjZGVmaW5lIE1BWF9UWF9USFJFQURTCQkJCTgKICNkZWZpbmUgTUFYX1JYX1RIUkVBRFMJCQkJOApAQCAtNjYwLDIxICs2NjEsNiBAQAogCVVFQ19OVU1fT0ZfVEhSRUFEU184ICA9IDB4NCAgIC8qIDggKi8KIH0gdWVjX251bV9vZl90aHJlYWRzX2U7CiAKLS8qIFVFQyBldGhlcm5ldCBpbnRlcmZhY2UgdHlwZQotKi8KLXR5cGVkZWYgZW51bSBlbmV0X2ludGVyZmFjZV90eXBlIHsKLQlNSUksCi0JUk1JSSwKLQlSR01JSSwKLQlHTUlJLAotCVJHTUlJX0lELAotCVJHTUlJX1JYSUQsCi0JUkdNSUlfVFhJRCwKLQlUQkksCi0JUlRCSSwKLQlTR01JSQotfSBlbmV0X2ludGVyZmFjZV90eXBlX2U7Ci0KIC8qIFVFQyBpbml0aWFsaXphdGlvbiBpbmZvIHN0cnVjdAogKi8KICNkZWZpbmUgU1REX1VFQ19JTkZPKG51bSkgXApAQCAtNzA1LDcgKzY5MSw3IEBACiAJdTE2CQkJCXJ4X2JkX3JpbmdfbGVuOwogCXUxNgkJCQl0eF9iZF9yaW5nX2xlbjsKIAl1OAkJCQlwaHlfYWRkcmVzczsKLQllbmV0X2ludGVyZmFjZV90eXBlX2UJCWVuZXRfaW50ZXJmYWNlX3R5cGU7CisJZW51bSBmc2xfcGh5X2VuZXRfaWYJCWVuZXRfaW50ZXJmYWNlX3R5cGU7CiAJaW50CQkJCXNwZWVkOwogfSB1ZWNfaW5mb190OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3FlL3VlY19waHkuYyBiL2RyaXZlcnMvcWUvdWVjX3BoeS5jCmluZGV4IDliZTc4NGUuLjM1ZjIzNjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcWUvdWVjX3BoeS5jCisrKyBiL2RyaXZlcnMvcWUvdWVjX3BoeS5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA1LDIwMTAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KICAqCiAgKiBBdXRob3I6IFNobG9taSBHcmlkaXNoCiAgKgpAQCAtNDg1LDcgKzQ4NSw3IEBACiB7CiAJc3RydWN0IGV0aF9kZXZpY2UgKmVkZXYgPSBtaWlfaW5mby0+ZGV2OwogCXVlY19wcml2YXRlX3QgKnVlYyA9IGVkZXYtPnByaXY7Ci0JZW51bSBlbmV0X2ludGVyZmFjZV90eXBlIGlmYWNlID0gdWVjLT51ZWNfaW5mby0+ZW5ldF9pbnRlcmZhY2VfdHlwZTsKKwllbnVtIGZzbF9waHlfZW5ldF9pZiBpZmFjZSA9IHVlYy0+dWVjX2luZm8tPmVuZXRfaW50ZXJmYWNlX3R5cGU7CiAJaW50CXNwZWVkID0gdWVjLT51ZWNfaW5mby0+c3BlZWQ7CiAKIAlpZiAoKHNwZWVkID09IDEwMDApICYmCkBAIC04NTMsNyArODUzLDcgQEAKIH0KIAogdm9pZCBtYXJ2ZWxsX3BoeV9pbnRlcmZhY2VfbW9kZSAoc3RydWN0IGV0aF9kZXZpY2UgKmRldiwKLQkJCQkgZW5ldF9pbnRlcmZhY2VfdHlwZV9lIHR5cGUsCisJCQkJIGVudW0gZnNsX3BoeV9lbmV0X2lmIHR5cGUsCiAJCQkJIGludCBzcGVlZAogCQkJCSkKIHsKQEAgLTkwNyw3ICs5MDcsNyBAQAogfQogCiB2b2lkIGNoYW5nZV9waHlfaW50ZXJmYWNlX21vZGUgKHN0cnVjdCBldGhfZGV2aWNlICpkZXYsCi0JCQkJZW5ldF9pbnRlcmZhY2VfdHlwZV9lIHR5cGUsIGludCBzcGVlZCkKKwkJCQllbnVtIGZzbF9waHlfZW5ldF9pZiB0eXBlLCBpbnQgc3BlZWQpCiB7CiAjaWZkZWYgQ09ORklHX1BIWV9NT0RFX05FRURfQ0hBTkdFCiAJbWFydmVsbF9waHlfaW50ZXJmYWNlX21vZGUgKGRldiwgdHlwZSwgc3BlZWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvZnRydGMwMTAuYyBiL2RyaXZlcnMvcnRjL2Z0cnRjMDEwLmMKaW5kZXggNzczOGE3YS4uMjVlNGE3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvZnRydGMwMTAuYworKysgYi9kcml2ZXJzL3J0Yy9mdHJ0YzAxMC5jCkBAIC0zNCw2ICszNCwxMyBAQAogCXVuc2lnbmVkIGludCBhbGFybV9ob3VyOwkvKiAweDE4ICovCiAJdW5zaWduZWQgaW50IHJlY29yZDsJCS8qIDB4MWMgKi8KIAl1bnNpZ25lZCBpbnQgY3I7CQkvKiAweDIwICovCisJdW5zaWduZWQgaW50IHdzZWM7CQkvKiAweDI0ICovCisJdW5zaWduZWQgaW50IHdtaW47CQkvKiAweDI4ICovCisJdW5zaWduZWQgaW50IHdob3VyOwkJLyogMHgyYyAqLworCXVuc2lnbmVkIGludCB3ZGF5OwkJLyogMHgzMCAqLworCXVuc2lnbmVkIGludCBpbnRyOwkJLyogMHgzNCAqLworCXVuc2lnbmVkIGludCBkaXY7CQkvKiAweDM4ICovCisJdW5zaWduZWQgaW50IHJldjsJCS8qIDB4M2MgKi8KIH07CiAKIC8qCkBAIC04NSw3ICs5MiwxMSBAQAogCWRlYnVnKCIlcygpOiByZWNvcmQgcmVnaXN0ZXI6ICV4XG4iLAogCSAgICAgIF9fZnVuY19fLCByZWFkbCgmcnRjLT5yZWNvcmQpKTsKIAorI2lmZGVmIENPTkZJR19GVFJUQzAxMF9QQ0xLCisJbm93ID0gKGZ0cnRjMDEwX3RpbWUoKSArIHJlYWRsKCZydGMtPnJlY29yZCkpIC8gUlRDX0RJVl9DT1VOVDsKKyNlbHNlIC8qIENPTkZJR19GVFJUQzAxMF9FWFRDTEsgKi8KIAlub3cgPSBmdHJ0YzAxMF90aW1lKCkgKyByZWFkbCgmcnRjLT5yZWNvcmQpOworI2VuZGlmCiAKIAl0b190bShub3csIHRtcCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1oY2QuYyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1oY2QuYwppbmRleCBmNDRmYzRlLi45ODJmOTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktaGNkLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9laGNpLWhjZC5jCkBAIC0yMDUsMTIgKzIwNSwxMiBAQAogCXVpbnQzMl90IHJlc3VsdDsKIAlkbyB7CiAJCXJlc3VsdCA9IGVoY2lfcmVhZGwocHRyKTsKKwkJdWRlbGF5KDUpOwogCQlpZiAocmVzdWx0ID09IH4odWludDMyX3QpMCkKIAkJCXJldHVybiAtMTsKIAkJcmVzdWx0ICY9IG1hc2s7CiAJCWlmIChyZXN1bHQgPT0gZG9uZSkKIAkJCXJldHVybiAwOwotCQl1ZGVsYXkoMSk7CiAJCXVzZWMtLTsKIAl9IHdoaWxlICh1c2VjID4gMCk7CiAJcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9laGNpLXBjaS5jIGIvZHJpdmVycy91c2IvaG9zdC9laGNpLXBjaS5jCmluZGV4IDA0NzkwMmEuLmNmZjM0MzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1wY2kuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktcGNpLmMKQEAgLTUzLDYgKzUzLDEwIEBACiAJaGNvciA9IChzdHJ1Y3QgZWhjaV9oY29yICopKCh1aW50MzJfdCkgaGNjciArCiAJCQlIQ19MRU5HVEgoZWhjaV9yZWFkbCgmaGNjci0+Y3JfY2FwYmFzZSkpKTsKIAorCWRlYnVnKCJFSENJLVBDSSBpbml0IGhjY3IgMHgleCBhbmQgaGNvciAweCV4IGhjX2xlbmd0aCAlZFxuIiwKKwkJCSh1aW50MzJfdCloY2NyLCAodWludDMyX3QpaGNvciwKKwkJCSh1aW50MzJfdClIQ19MRU5HVEgoZWhjaV9yZWFkbCgmaGNjci0+Y3JfY2FwYmFzZSkpKTsKKwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2kuaCBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCmluZGV4IGQzYWE1NWIuLjk0NWFiNjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCkBAIC0xNzUsNyArMTc1LDcgQEAKIAl1aW50MzJfdCBxdF9idWZmZXJfaGlbNV07CS8qIEFwcGVuZGl4IEIgKi8KIAkvKiBwYWQgc3RydWN0IGZvciAzMiBieXRlIGFsaWdubWVudCAqLwogCXVpbnQzMl90IHVudXNlZFszXTsKLX0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDMyKSkpOworfTsKIAogLyogUXVldWUgSGVhZCAoUUgpLiAqLwogc3RydWN0IFFIIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2IvbXVzYl9jb3JlLmMgYi9kcml2ZXJzL3VzYi9tdXNiL211c2JfY29yZS5jCmluZGV4IDZmZTJjMzkuLjU0NWViZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL211c2IvbXVzYl9jb3JlLmMKKysrIGIvZHJpdmVycy91c2IvbXVzYi9tdXNiX2NvcmUuYwpAQCAtNzYsNyArNzYsNyBAQAogICogZXBpbmZvCS0gUG9pbnRlciB0byBFUCBjb25maWd1cmF0aW9uIHRhYmxlCiAgKiBjbnQJCS0gTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIEVQIGNvbmYgdGFibGUuCiAgKi8KLXZvaWQgbXVzYl9jb25maWd1cmVfZXAoc3RydWN0IG11c2JfZXBpbmZvICplcGluZm8sIHU4IGNudCkKK3ZvaWQgbXVzYl9jb25maWd1cmVfZXAoY29uc3Qgc3RydWN0IG11c2JfZXBpbmZvICplcGluZm8sIHU4IGNudCkKIHsKIAl1MTYgY3NyOwogCXUxNiBmaWZvYWRkciA9IDY0OyAvKiBGaXJzdCA2NCBieXRlcyBvZiBGSUZPIHJlc2VydmVkIGZvciBFUDAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2IvbXVzYl9jb3JlLmggYi9kcml2ZXJzL3VzYi9tdXNiL211c2JfY29yZS5oCmluZGV4IDhmNzM4NzYuLmE4YWRjY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL211c2IvbXVzYl9jb3JlLmgKKysrIGIvZHJpdmVycy91c2IvbXVzYi9tdXNiX2NvcmUuaApAQCAtMzU3LDcgKzM1Nyw3IEBACiAKIC8qIGV4cG9ydGVkIGZ1bmN0aW9ucyAqLwogZXh0ZXJuIHZvaWQgbXVzYl9zdGFydCh2b2lkKTsKLWV4dGVybiB2b2lkIG11c2JfY29uZmlndXJlX2VwKHN0cnVjdCBtdXNiX2VwaW5mbyAqZXBpbmZvLCB1OCBjbnQpOworZXh0ZXJuIHZvaWQgbXVzYl9jb25maWd1cmVfZXAoY29uc3Qgc3RydWN0IG11c2JfZXBpbmZvICplcGluZm8sIHU4IGNudCk7CiBleHRlcm4gdm9pZCB3cml0ZV9maWZvKHU4IGVwLCB1MzIgbGVuZ3RoLCB2b2lkICpmaWZvX2RhdGEpOwogZXh0ZXJuIHZvaWQgcmVhZF9maWZvKHU4IGVwLCB1MzIgbGVuZ3RoLCB2b2lkICpmaWZvX2RhdGEpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tdXNiL211c2JfaGNkLmMgYi9kcml2ZXJzL3VzYi9tdXNiL211c2JfaGNkLmMKaW5kZXggZjM4YjI3OS4uOGIwYzYxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbXVzYi9tdXNiX2hjZC5jCisrKyBiL2RyaXZlcnMvdXNiL211c2IvbXVzYl9oY2QuYwpAQCAtMjksNyArMjksNyBAQAogI2RlZmluZSBVU0JfTVNDX0JCQl9HRVRfTUFYX0xVTgkweEZFCiAKIC8qIEVuZHBvaW50IGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gKi8KLXN0YXRpYyBzdHJ1Y3QgbXVzYl9lcGluZm8gZXBpbmZvWzNdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBtdXNiX2VwaW5mbyBlcGluZm9bM10gPSB7CiAJe01VU0JfQlVMS19FUCwgMSwgNTEyfSwgLyogRVAxIC0gQmx1ayBPdXQgLSA1MTIgQnl0ZXMgKi8KIAl7TVVTQl9CVUxLX0VQLCAwLCA1MTJ9LCAvKiBFUDEgLSBCbHVrIEluICAtIDUxMiBCeXRlcyAqLwogCXtNVVNCX0lOVFJfRVAsIDAsIDY0fSAgIC8qIEVQMiAtIEludGVycnVwdCBJTiAtIDY0IEJ5dGVzICovCkBAIC00MSw3ICs0MSw3IEBACiBzdGF0aWMgdTMyIHBvcnRfc3RhdHVzOwogCiAvKiBEZXZpY2UgZGVzY3JpcHRvciAqLwotc3RhdGljIHU4IHJvb3RfaHViX2Rldl9kZXNbXSA9IHsKK3N0YXRpYyBjb25zdCB1OCByb290X2h1Yl9kZXZfZGVzW10gPSB7CiAJMHgxMiwJCQkvKiAgX191OCAgYkxlbmd0aDsgKi8KIAkweDAxLAkJCS8qICBfX3U4ICBiRGVzY3JpcHRvclR5cGU7IERldmljZSAqLwogCTB4MDAsCQkJLyogIF9fdTE2IGJjZFVTQjsgdjEuMSAqLwpAQCAtNjMsNyArNjMsNyBAQAogfTsKIAogLyogQ29uZmlndXJhdGlvbiBkZXNjcmlwdG9yICovCi1zdGF0aWMgdTggcm9vdF9odWJfY29uZmlnX2Rlc1tdID0geworc3RhdGljIGNvbnN0IHU4IHJvb3RfaHViX2NvbmZpZ19kZXNbXSA9IHsKIAkweDA5LAkJCS8qICBfX3U4ICBiTGVuZ3RoOyAqLwogCTB4MDIsCQkJLyogIF9fdTggIGJEZXNjcmlwdG9yVHlwZTsgQ29uZmlndXJhdGlvbiAqLwogCTB4MTksCQkJLyogIF9fdTE2IHdUb3RhbExlbmd0aDsgKi8KQEAgLTk2LDE0ICs5NiwxNCBAQAogCTB4ZmYJCQkvKiAgX191OCAgZXBfYkludGVydmFsOyAyNTUgbXMgKi8KIH07CiAKLXN0YXRpYyB1bnNpZ25lZCBjaGFyIHJvb3RfaHViX3N0cl9pbmRleDBbXSA9IHsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHJvb3RfaHViX3N0cl9pbmRleDBbXSA9IHsKIAkweDA0LAkJCS8qICBfX3U4ICBiTGVuZ3RoOyAqLwogCTB4MDMsCQkJLyogIF9fdTggIGJEZXNjcmlwdG9yVHlwZTsgU3RyaW5nLWRlc2NyaXB0b3IgKi8KIAkweDA5LAkJCS8qICBfX3U4ICBsYW5nIElEICovCiAJMHgwNCwJCQkvKiAgX191OCAgbGFuZyBJRCAqLwogfTsKIAotc3RhdGljIHVuc2lnbmVkIGNoYXIgcm9vdF9odWJfc3RyX2luZGV4MVtdID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcm9vdF9odWJfc3RyX2luZGV4MVtdID0gewogCTB4MWMsCQkJLyogIF9fdTggIGJMZW5ndGg7ICovCiAJMHgwMywJCQkvKiAgX191OCAgYkRlc2NyaXB0b3JUeXBlOyBTdHJpbmctZGVzY3JpcHRvciAqLwogCSdNJywJCQkvKiAgX191OCAgVW5pY29kZSAqLwpAQCAtNTU3LDcgKzU1Nyw3IEBACiAJaW50IGxlbiA9IDA7CiAJaW50IHN0YXQgPSAwOwogCXUzMiBkYXRhYls0XTsKLQl1OCAqZGF0YV9idWYgPSAodTggKikgZGF0YWI7CisJY29uc3QgdTggKmRhdGFfYnVmID0gKHU4ICopIGRhdGFiOwogCXUxNiBibVJUeXBlX2JSZXE7CiAJdTE2IHdWYWx1ZTsKIAl1MTYgd0luZGV4OwpAQCAtNzc4LDI1ICs3NzgsMjcgQEAKIAogCQlicmVhazsKIAotCWNhc2UgUkhfR0VUX0RFU0NSSVBUT1IgfCBSSF9DTEFTUzoKKwljYXNlIFJIX0dFVF9ERVNDUklQVE9SIHwgUkhfQ0xBU1M6IHsKKwkJdTggKl9kYXRhX2J1ZiA9ICh1OCAqKSBkYXRhYjsKIAkJZGVidWcoIlJIX0dFVF9ERVNDUklQVE9SIHwgUkhfQ0xBU1NcbiIpOwogCi0JCWRhdGFfYnVmWzBdID0gMHgwOTsJLyogbWluIGxlbmd0aDsgKi8KLQkJZGF0YV9idWZbMV0gPSAweDI5OwotCQlkYXRhX2J1ZlsyXSA9IDB4MTsJLyogMSBwb3J0ICovCi0JCWRhdGFfYnVmWzNdID0gMHgwMTsJLyogcGVyLXBvcnQgcG93ZXIgc3dpdGNoaW5nICovCi0JCWRhdGFfYnVmWzNdIHw9IDB4MTA7CS8qIG5vIG92ZXJjdXJyZW50IHJlcG9ydGluZyAqLworCQlfZGF0YV9idWZbMF0gPSAweDA5OwkvKiBtaW4gbGVuZ3RoOyAqLworCQlfZGF0YV9idWZbMV0gPSAweDI5OworCQlfZGF0YV9idWZbMl0gPSAweDE7CS8qIDEgcG9ydCAqLworCQlfZGF0YV9idWZbM10gPSAweDAxOwkvKiBwZXItcG9ydCBwb3dlciBzd2l0Y2hpbmcgKi8KKwkJX2RhdGFfYnVmWzNdIHw9IDB4MTA7CS8qIG5vIG92ZXJjdXJyZW50IHJlcG9ydGluZyAqLwogCiAJCS8qIENvcnJlc3BvbmRzIHRvIGRhdGFfYnVmWzQtN10gKi8KLQkJZGF0YV9idWZbNF0gPSAwOwotCQlkYXRhX2J1Zls1XSA9IDU7Ci0JCWRhdGFfYnVmWzZdID0gMDsKLQkJZGF0YV9idWZbN10gPSAweDAyOwotCQlkYXRhX2J1Zls4XSA9IDB4ZmY7CisJCV9kYXRhX2J1Zls0XSA9IDA7CisJCV9kYXRhX2J1Zls1XSA9IDU7CisJCV9kYXRhX2J1Zls2XSA9IDA7CisJCV9kYXRhX2J1Zls3XSA9IDB4MDI7CisJCV9kYXRhX2J1Zls4XSA9IDB4ZmY7CiAKIAkJbGVuID0gbWluX3QodW5zaWduZWQgaW50LCBsZW5pLAogCQkJICAgIG1pbl90KHVuc2lnbmVkIGludCwgZGF0YV9idWZbMF0sIHdMZW5ndGgpKTsKIAkJYnJlYWs7CisJfQogCiAJY2FzZSBSSF9HRVRfQ09ORklHVVJBVElPTjoKIAkJZGVidWcoIlJIX0dFVF9DT05GSUdVUkFUSU9OXG4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vTWFrZWZpbGUgYi9kcml2ZXJzL3ZpZGVvL01ha2VmaWxlCmluZGV4IDRiZTgyZTcuLjViN2IyNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vTWFrZWZpbGUKKysrIGIvZHJpdmVycy92aWRlby9NYWtlZmlsZQpAQCAtMzQsNiArMzQsNyBAQAogQ09CSlMtJChDT05GSUdfVklERU9fTUI4NjJ4eCkgKz0gbWI4NjJ4eC5vIHZpZGVvbW9kZXMubwogQ09CSlMtJChDT05GSUdfVklERU9fTUI4NlIweEdEQykgKz0gbWI4NnIweGdkYy5vIHZpZGVvbW9kZXMubwogQ09CSlMtJChDT05GSUdfVklERU9fTVgzKSArPSBteDNmYi5vCitDT0JKUy0kKENPTkZJR19WSURFT19NWDUpICs9IG14Y19pcHV2M19mYi5vIGlwdV9jb21tb24ubyBpcHVfZGlzcC5vCiBDT0JKUy0kKENPTkZJR19WSURFT19TRUQxMzgwNikgKz0gc2VkMTM4MDYubwogQ09CSlMtJChDT05GSUdfU0VEMTU2WCkgKz0gc2VkMTU2eC5vCiBDT0JKUy0kKENPTkZJR19WSURFT19TTTUwMSkgKz0gc201MDEubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9pcHUuaCBiL2RyaXZlcnMvdmlkZW8vaXB1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhiYzI4NwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvdmlkZW8vaXB1LmgKQEAgLTAsMCArMSwzMjEgQEAKKy8qCisgKiBQb3J0aW5nIHRvIHUtYm9vdDoKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMTAKKyAqIFN0ZWZhbm8gQmFiaWMsIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHNiYWJpY0BkZW54LmRlCisgKgorICogTGludXggSVBVIGRyaXZlciBmb3IgTVg1MToKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDUtMjAxMCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9JUFVfSF9fCisjZGVmaW5lIF9fQVNNX0FSQ0hfSVBVX0hfXworCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworI2RlZmluZSBJRE1BX0NIQU5fSU5WQUxJRAkweEZGCisjZGVmaW5lIEhJR0hfUkVTT0xVVElPTl9XSURUSAkxMDI0CisKK3N0cnVjdCBjbGsgeworCWNvbnN0IGNoYXIgKm5hbWU7CisJaW50IGlkOworCS8qIFNvdXJjZSBjbG9jayB0aGlzIGNsayBkZXBlbmRzIG9uICovCisJc3RydWN0IGNsayAqcGFyZW50OworCS8qIFNlY29uZGFyeSBjbG9jayB0byBlbmFibGUvZGlzYWJsZSB3aXRoIHRoaXMgY2xvY2sgKi8KKwlzdHJ1Y3QgY2xrICpzZWNvbmRhcnk7CisJLyogQ3VycmVudCBjbG9jayByYXRlICovCisJdW5zaWduZWQgbG9uZyByYXRlOworCS8qIFJlZmVyZW5jZSBjb3VudCBvZiBjbG9jayBlbmFibGUvZGlzYWJsZSAqLworCV9fczggdXNlY291bnQ7CisJLyogUmVnaXN0ZXIgYml0IHBvc2l0aW9uIGZvciBjbG9jaydzIGVuYWJsZS9kaXNhYmxlIGNvbnRyb2wuICovCisJdTggZW5hYmxlX3NoaWZ0OworCS8qIFJlZ2lzdGVyIGFkZHJlc3MgZm9yIGNsb2NrJ3MgZW5hYmxlL2Rpc2FibGUgY29udHJvbC4gKi8KKwl2b2lkICplbmFibGVfcmVnOworCXUzMiBmbGFnczsKKwkvKgorCSAqIEZ1bmN0aW9uIHB0ciB0byByZWNhbGN1bGF0ZSB0aGUgY2xvY2sncyByYXRlIGJhc2VkIG9uIHBhcmVudAorCSAqIGNsb2NrJ3MgcmF0ZQorCSAqLworCXZvaWQgKCpyZWNhbGMpIChzdHJ1Y3QgY2xrICopOworCS8qCisJICogRnVuY3Rpb24gcHRyIHRvIHNldCB0aGUgY2xvY2sgdG8gYSBuZXcgcmF0ZS4gVGhlIHJhdGUgbXVzdCBtYXRjaCBhCisJICogc3VwcG9ydGVkIHJhdGUgcmV0dXJuZWQgZnJvbSByb3VuZF9yYXRlLiBMZWF2ZSBibGFuayBpZiBjbG9jayBpcyBub3QKKwkqIHByb2dyYW1tYWJsZQorCSAqLworCWludCAoKnNldF9yYXRlKSAoc3RydWN0IGNsayAqLCB1bnNpZ25lZCBsb25nKTsKKwkvKgorCSAqIEZ1bmN0aW9uIHB0ciB0byByb3VuZCB0aGUgcmVxdWVzdGVkIGNsb2NrIHJhdGUgdG8gdGhlIG5lYXJlc3QKKwkgKiBzdXBwb3J0ZWQgcmF0ZSB0aGF0IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgcmVxdWVzdGVkIHJhdGUuCisJICovCisJdW5zaWduZWQgbG9uZyAoKnJvdW5kX3JhdGUpIChzdHJ1Y3QgY2xrICosIHVuc2lnbmVkIGxvbmcpOworCS8qCisJICogRnVuY3Rpb24gcHRyIHRvIGVuYWJsZSB0aGUgY2xvY2suIExlYXZlIGJsYW5rIGlmIGNsb2NrIGNhbiBub3QKKwkgKiBiZSBnYXRlZC4KKwkgKi8KKwlpbnQgKCplbmFibGUpIChzdHJ1Y3QgY2xrICopOworCS8qCisJICogRnVuY3Rpb24gcHRyIHRvIGRpc2FibGUgdGhlIGNsb2NrLiBMZWF2ZSBibGFuayBpZiBjbG9jayBjYW4gbm90CisJICogYmUgZ2F0ZWQuCisJICovCisJdm9pZCAoKmRpc2FibGUpIChzdHJ1Y3QgY2xrICopOworCS8qIEZ1bmN0aW9uIHB0ciB0byBzZXQgdGhlIHBhcmVudCBjbG9jayBvZiB0aGUgY2xvY2suICovCisJaW50ICgqc2V0X3BhcmVudCkgKHN0cnVjdCBjbGsgKiwgc3RydWN0IGNsayAqKTsKK307CisKKy8qCisgKiBFbnVtZXJhdGlvbiBvZiBTeW5jaHJvbm91cyAoTWVtb3J5LWxlc3MpIHBhbmVsIHR5cGVzCisgKi8KK3R5cGVkZWYgZW51bSB7CisJSVBVX1BBTkVMX1NIQVJQX1RGVCwKKwlJUFVfUEFORUxfVEZULAorfSBpcHVfcGFuZWxfdDsKKworLyogIElQVSBQaXhlbCBmb3JtYXQgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgZm91cmNjKGEsIGIsIGMsIGQpXAorCSgoKF9fdTMyKShhKTw8MCl8KChfX3UzMikoYik8PDgpfCgoX191MzIpKGMpPDwxNil8KChfX3UzMikoZCk8PDI0KSkKKworLyoKKyAqIFBpeGVsIGZvcm1hdHMgYXJlIGRlZmluZWQgd2l0aCBBU0NJSSBGT1VSQ0MgY29kZS4gVGhlIHBpeGVsIGZvcm1hdCBjb2RlcyBhcmUKKyAqIHRoZSBzYW1lIHVzZWQgYnkgVjRMMiBBUEkuCisgKi8KKworI2RlZmluZSBJUFVfUElYX0ZNVF9HRU5FUklDIGZvdXJjYygnSScsICdQJywgJ1UnLCAnMCcpCisjZGVmaW5lIElQVV9QSVhfRk1UX0dFTkVSSUNfMzIgZm91cmNjKCdJJywgJ1AnLCAnVScsICcxJykKKyNkZWZpbmUgSVBVX1BJWF9GTVRfTFZEUzY2NiBmb3VyY2MoJ0wnLCAnVicsICdEJywgJzYnKQorI2RlZmluZSBJUFVfUElYX0ZNVF9MVkRTODg4IGZvdXJjYygnTCcsICdWJywgJ0QnLCAnOCcpCisKKyNkZWZpbmUgSVBVX1BJWF9GTVRfUkdCMzMyICBmb3VyY2MoJ1InLCAnRycsICdCJywgJzEnKQkvKjwgIDggIFJHQi0zLTMtMiAgICAqLworI2RlZmluZSBJUFVfUElYX0ZNVF9SR0I1NTUgIGZvdXJjYygnUicsICdHJywgJ0InLCAnTycpCS8qPCAxNiAgUkdCLTUtNS01ICAgICovCisjZGVmaW5lIElQVV9QSVhfRk1UX1JHQjU2NSAgZm91cmNjKCdSJywgJ0cnLCAnQicsICdQJykJLyo8IDEgNiAgUkdCLTUtNi01ICAgKi8KKyNkZWZpbmUgSVBVX1BJWF9GTVRfUkdCNjY2ICBmb3VyY2MoJ1InLCAnRycsICdCJywgJzYnKQkvKjwgMTggIFJHQi02LTYtNiAgICAqLworI2RlZmluZSBJUFVfUElYX0ZNVF9CR1I2NjYgIGZvdXJjYygnQicsICdHJywgJ1InLCAnNicpCS8qPCAxOCAgQkdSLTYtNi02ICAgICovCisjZGVmaW5lIElQVV9QSVhfRk1UX0JHUjI0ICAgZm91cmNjKCdCJywgJ0cnLCAnUicsICczJykJLyo8IDI0ICBCR1ItOC04LTggICAgKi8KKyNkZWZpbmUgSVBVX1BJWF9GTVRfUkdCMjQgICBmb3VyY2MoJ1InLCAnRycsICdCJywgJzMnKQkvKjwgMjQgIFJHQi04LTgtOCAgICAqLworI2RlZmluZSBJUFVfUElYX0ZNVF9CR1IzMiAgIGZvdXJjYygnQicsICdHJywgJ1InLCAnNCcpCS8qPCAzMiAgQkdSLTgtOC04LTggICovCisjZGVmaW5lIElQVV9QSVhfRk1UX0JHUkEzMiAgZm91cmNjKCdCJywgJ0cnLCAnUicsICdBJykJLyo8IDMyICBCR1ItOC04LTgtOCAgKi8KKyNkZWZpbmUgSVBVX1BJWF9GTVRfUkdCMzIgICBmb3VyY2MoJ1InLCAnRycsICdCJywgJzQnKQkvKjwgMzIgIFJHQi04LTgtOC04ICAqLworI2RlZmluZSBJUFVfUElYX0ZNVF9SR0JBMzIgIGZvdXJjYygnUicsICdHJywgJ0InLCAnQScpCS8qPCAzMiAgUkdCLTgtOC04LTggICovCisjZGVmaW5lIElQVV9QSVhfRk1UX0FCR1IzMiAgZm91cmNjKCdBJywgJ0InLCAnRycsICdSJykJLyo8IDMyICBBQkdSLTgtOC04LTggKi8KKworLyogWVVWIEludGVybGVhdmVkIEZvcm1hdHMgKi8KKyNkZWZpbmUgSVBVX1BJWF9GTVRfWVVZViAgICBmb3VyY2MoJ1knLCAnVScsICdZJywgJ1YnKQkvKjwgMTYgWVVWIDQ6MjoyICovCisjZGVmaW5lIElQVV9QSVhfRk1UX1VZVlkgICAgZm91cmNjKCdVJywgJ1knLCAnVicsICdZJykJLyo8IDE2IFlVViA0OjI6MiAqLworI2RlZmluZSBJUFVfUElYX0ZNVF9ZNDFQICAgIGZvdXJjYygnWScsICc0JywgJzEnLCAnUCcpCS8qPCAxMiBZVVYgNDoxOjEgKi8KKyNkZWZpbmUgSVBVX1BJWF9GTVRfWVVWNDQ0ICBmb3VyY2MoJ1knLCAnNCcsICc0JywgJzQnKQkvKjwgMjQgWVVWIDQ6NDo0ICovCisKKy8qIHR3byBwbGFuZXMgLS0gb25lIFksIG9uZSBDYiArIENyIGludGVybGVhdmVkICAqLworI2RlZmluZSBJUFVfUElYX0ZNVF9OVjEyICAgIGZvdXJjYygnTicsICdWJywgJzEnLCAnMicpIC8qIDEyICBZL0NiQ3IgNDoyOjAgICovCisKKyNkZWZpbmUgSVBVX1BJWF9GTVRfR1JFWSAgICBmb3VyY2MoJ0cnLCAnUicsICdFJywgJ1knKQkvKjwgOCAgR3JleXNjYWxlICovCisjZGVmaW5lIElQVV9QSVhfRk1UX1lWVTQxMFAgZm91cmNjKCdZJywgJ1YnLCAnVScsICc5JykJLyo8IDkgIFlWVSA0OjE6MCAqLworI2RlZmluZSBJUFVfUElYX0ZNVF9ZVVY0MTBQIGZvdXJjYygnWScsICdVJywgJ1YnLCAnOScpCS8qPCA5ICBZVVYgNDoxOjAgKi8KKyNkZWZpbmUgSVBVX1BJWF9GTVRfWVZVNDIwUCBmb3VyY2MoJ1knLCAnVicsICcxJywgJzInKQkvKjwgMTIgWVZVIDQ6MjowICovCisjZGVmaW5lIElQVV9QSVhfRk1UX1lVVjQyMFAgZm91cmNjKCdJJywgJzQnLCAnMicsICcwJykJLyo8IDEyIFlVViA0OjI6MCAqLworI2RlZmluZSBJUFVfUElYX0ZNVF9ZVVY0MjBQMiBmb3VyY2MoJ1knLCAnVScsICcxJywgJzInKQkvKjwgMTIgWVVWIDQ6MjowICovCisjZGVmaW5lIElQVV9QSVhfRk1UX1lWVTQyMlAgZm91cmNjKCdZJywgJ1YnLCAnMScsICc2JykJLyo8IDE2IFlWVSA0OjI6MiAqLworI2RlZmluZSBJUFVfUElYX0ZNVF9ZVVY0MjJQIGZvdXJjYygnNCcsICcyJywgJzInLCAnUCcpCS8qPCAxNiBZVVYgNDoyOjIgKi8KKworLyoKKyAqIElQVSBEcml2ZXIgY2hhbm5lbHMgZGVmaW5pdGlvbnMuCisgKiBOb3RlIHRoZXNlIGFyZSBkaWZmZXJlbnQgZnJvbSBJRE1BIGNoYW5uZWxzCisgKi8KKyNkZWZpbmUgSVBVX01BWF9DSAkzMgorI2RlZmluZSBfTUFLRV9DSEFOKG51bSwgdl9pbiwgZ19pbiwgYV9pbiwgb3V0KSBcCisJKChudW0gPDwgMjQpIHwgKHZfaW4gPDwgMTgpIHwgKGdfaW4gPDwgMTIpIHwgKGFfaW4gPDwgNikgfCBvdXQpCisjZGVmaW5lIF9NQUtFX0FMVF9DSEFOKGNoKQkJKGNoIHwgKElQVV9NQVhfQ0ggPDwgMjQpKQorI2RlZmluZSBJUFVfQ0hBTl9JRChjaCkJCQkoY2ggPj4gMjQpCisjZGVmaW5lIElQVV9DSEFOX0FMVChjaCkJCShjaCAmIDB4MDIwMDAwMDApCisjZGVmaW5lIElQVV9DSEFOX0FMUEhBX0lOX0RNQShjaCkJKCh1aW50MzJfdCkgKGNoID4+IDYpICYgMHgzRikKKyNkZWZpbmUgSVBVX0NIQU5fR1JBUEhfSU5fRE1BKGNoKQkoKHVpbnQzMl90KSAoY2ggPj4gMTIpICYgMHgzRikKKyNkZWZpbmUgSVBVX0NIQU5fVklERU9fSU5fRE1BKGNoKQkoKHVpbnQzMl90KSAoY2ggPj4gMTgpICYgMHgzRikKKyNkZWZpbmUgSVBVX0NIQU5fT1VUX0RNQShjaCkJCSgodWludDMyX3QpIChjaCAmIDB4M0YpKQorI2RlZmluZSBOT19ETUEgMHgzRgorI2RlZmluZSBBTFQJMQorCisvKgorICogRW51bWVyYXRpb24gb2YgSVBVIGxvZ2ljYWwgY2hhbm5lbHMuIEFuIElQVSBsb2dpY2FsIGNoYW5uZWwgaXMgZGVmaW5lZCBhcyBhCisgKiBjb21iaW5hdGlvbiBvZiBhbiBpbnB1dCAobWVtb3J5IHRvIElQVSksIG91dHB1dCAoSVBVIHRvIG1lbW9yeSksIGFuZC9vcgorICogc2Vjb25kYXJ5IGlucHV0IElETUEgY2hhbm5lbHMgYW5kIGluIHNvbWUgY2FzZXMgYW4gSW1hZ2UgQ29udmVydGVyIHRhc2suCisgKiBTb21lIGNoYW5uZWxzIGNvbnNpc3Qgb2Ygb25seSBhbiBpbnB1dCBvciBvdXRwdXQuCisgKi8KK3R5cGVkZWYgZW51bSB7CisJQ0hBTl9OT05FID0gLTEsCisKKwlNRU1fRENfU1lOQyA9IF9NQUtFX0NIQU4oNywgMjgsIE5PX0RNQSwgTk9fRE1BLCBOT19ETUEpLAorCU1FTV9EQ19BU1lOQyA9IF9NQUtFX0NIQU4oOCwgNDEsIE5PX0RNQSwgTk9fRE1BLCBOT19ETUEpLAorCU1FTV9CR19TWU5DID0gX01BS0VfQ0hBTig5LCAyMywgTk9fRE1BLCA1MSwgTk9fRE1BKSwKKwlNRU1fRkdfU1lOQyA9IF9NQUtFX0NIQU4oMTAsIDI3LCBOT19ETUEsIDMxLCBOT19ETUEpLAorCisJTUVNX0JHX0FTWU5DMCA9IF9NQUtFX0NIQU4oMTEsIDI0LCBOT19ETUEsIDUyLCBOT19ETUEpLAorCU1FTV9GR19BU1lOQzAgPSBfTUFLRV9DSEFOKDEyLCAyOSwgTk9fRE1BLCAzMywgTk9fRE1BKSwKKwlNRU1fQkdfQVNZTkMxID0gX01BS0VfQUxUX0NIQU4oTUVNX0JHX0FTWU5DMCksCisJTUVNX0ZHX0FTWU5DMSA9IF9NQUtFX0FMVF9DSEFOKE1FTV9GR19BU1lOQzApLAorCisJRElSRUNUX0FTWU5DMCA9IF9NQUtFX0NIQU4oMTMsIE5PX0RNQSwgTk9fRE1BLCBOT19ETUEsIE5PX0RNQSksCisJRElSRUNUX0FTWU5DMSA9IF9NQUtFX0NIQU4oMTQsIE5PX0RNQSwgTk9fRE1BLCBOT19ETUEsIE5PX0RNQSksCisKK30gaXB1X2NoYW5uZWxfdDsKKworLyoKKyAqIEVudW1lcmF0aW9uIG9mIHR5cGVzIG9mIGJ1ZmZlcnMgZm9yIGEgbG9naWNhbCBjaGFubmVsLgorICovCit0eXBlZGVmIGVudW0geworCUlQVV9PVVRQVVRfQlVGRkVSID0gMCwJLyo8IEJ1ZmZlciBmb3Igb3V0cHV0IGZyb20gSVBVICovCisJSVBVX0FMUEhBX0lOX0JVRkZFUiA9IDEsCS8qPCBCdWZmZXIgZm9yIGlucHV0IHRvIElQVSAqLworCUlQVV9HUkFQSF9JTl9CVUZGRVIgPSAyLAkvKjwgQnVmZmVyIGZvciBpbnB1dCB0byBJUFUgKi8KKwlJUFVfVklERU9fSU5fQlVGRkVSID0gMywJLyo8IEJ1ZmZlciBmb3IgaW5wdXQgdG8gSVBVICovCisJSVBVX0lOUFVUX0JVRkZFUiA9IElQVV9WSURFT19JTl9CVUZGRVIsCisJSVBVX1NFQ19JTlBVVF9CVUZGRVIgPSBJUFVfR1JBUEhfSU5fQlVGRkVSLAorfSBpcHVfYnVmZmVyX3Q7CisKKyNkZWZpbmUgSVBVX1BBTkVMX1NFUklBTAkJMQorI2RlZmluZSBJUFVfUEFORUxfUEFSQUxMRUwJCTIKKworc3RydWN0IGlwdV9jaGFubmVsIHsKKwl1OCB2aWRlb19pbl9kbWE7CisJdTggYWxwaGFfaW5fZG1hOworCXU4IGdyYXBoX2luX2RtYTsKKwl1OCBvdXRfZG1hOworfTsKKworZW51bSBpcHVfZG1mY190eXBlIHsKKwlETUZDX05PUk1BTCA9IDAsCisJRE1GQ19ISUdIX1JFU09MVVRJT05fREMsCisJRE1GQ19ISUdIX1JFU09MVVRJT05fRFAsCisJRE1GQ19ISUdIX1JFU09MVVRJT05fT05MWV9EUCwKK307CisKKworLyoKKyAqIFVuaW9uIG9mIGluaXRpYWxpemF0aW9uIHBhcmFtZXRlcnMgZm9yIGEgbG9naWNhbCBjaGFubmVsLgorICovCit0eXBlZGVmIHVuaW9uIHsKKwlzdHJ1Y3QgeworCQl1aW50MzJfdCBkaTsKKwkJdW5zaWduZWQgY2hhciBpbnRlcmxhY2VkOworCX0gbWVtX2RjX3N5bmM7CisJc3RydWN0IHsKKwkJdWludDMyX3QgdGVtcDsKKwl9IG1lbV9zZGNfZmc7CisJc3RydWN0IHsKKwkJdWludDMyX3QgZGk7CisJCXVuc2lnbmVkIGNoYXIgaW50ZXJsYWNlZDsKKwkJdWludDMyX3QgaW5fcGl4ZWxfZm10OworCQl1aW50MzJfdCBvdXRfcGl4ZWxfZm10OworCQl1bnNpZ25lZCBjaGFyIGFscGhhX2NoYW5fZW47CisJfSBtZW1fZHBfYmdfc3luYzsKKwlzdHJ1Y3QgeworCQl1aW50MzJfdCB0ZW1wOworCX0gbWVtX3NkY19iZzsKKwlzdHJ1Y3QgeworCQl1aW50MzJfdCBkaTsKKwkJdW5zaWduZWQgY2hhciBpbnRlcmxhY2VkOworCQl1aW50MzJfdCBpbl9waXhlbF9mbXQ7CisJCXVpbnQzMl90IG91dF9waXhlbF9mbXQ7CisJCXVuc2lnbmVkIGNoYXIgYWxwaGFfY2hhbl9lbjsKKwl9IG1lbV9kcF9mZ19zeW5jOworfSBpcHVfY2hhbm5lbF9wYXJhbXNfdDsKKworLyoKKyAqIEJpdGZpZWxkIG9mIERpc3BsYXkgSW50ZXJmYWNlIHNpZ25hbCBwb2xhcml0aWVzLgorICovCit0eXBlZGVmIHN0cnVjdCB7CisJdW5zaWduZWQgZGF0YW1hc2tfZW46MTsKKwl1bnNpZ25lZCBleHRfY2xrOjE7CisJdW5zaWduZWQgaW50ZXJsYWNlZDoxOworCXVuc2lnbmVkIG9kZF9maWVsZF9maXJzdDoxOworCXVuc2lnbmVkIGNsa3NlbF9lbjoxOworCXVuc2lnbmVkIGNsa2lkbGVfZW46MTsKKwl1bnNpZ25lZCBkYXRhX3BvbDoxOwkvKiB0cnVlID0gaW52ZXJ0ZWQgKi8KKwl1bnNpZ25lZCBjbGtfcG9sOjE7CS8qIHRydWUgPSByaXNpbmcgZWRnZSAqLworCXVuc2lnbmVkIGVuYWJsZV9wb2w6MTsKKwl1bnNpZ25lZCBIc3luY19wb2w6MTsJLyogdHJ1ZSA9IGFjdGl2ZSBoaWdoICovCisJdW5zaWduZWQgVnN5bmNfcG9sOjE7Cit9IGlwdV9kaV9zaWduYWxfY2ZnX3Q7CisKK3R5cGVkZWYgZW51bSB7CisJUkdCLAorCVlDYkNyLAorCVlVVgorfSBpcHVfY29sb3Jfc3BhY2VfdDsKKworLyogQ29tbW9uIElQVSBBUEkgKi8KK2ludDMyX3QgaXB1X2luaXRfY2hhbm5lbChpcHVfY2hhbm5lbF90IGNoYW5uZWwsIGlwdV9jaGFubmVsX3BhcmFtc190ICpwYXJhbXMpOwordm9pZCBpcHVfdW5pbml0X2NoYW5uZWwoaXB1X2NoYW5uZWxfdCBjaGFubmVsKTsKKworaW50MzJfdCBpcHVfaW5pdF9jaGFubmVsX2J1ZmZlcihpcHVfY2hhbm5lbF90IGNoYW5uZWwsIGlwdV9idWZmZXJfdCB0eXBlLAorCQkJCXVpbnQzMl90IHBpeGVsX2ZtdCwKKwkJCQl1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LAorCQkJCXVpbnQzMl90IHN0cmlkZSwKKwkJCQlkbWFfYWRkcl90IHBoeWFkZHJfMCwgZG1hX2FkZHJfdCBwaHlhZGRyXzEsCisJCQkJdWludDMyX3QgdV9vZmZzZXQsIHVpbnQzMl90IHZfb2Zmc2V0KTsKKworaW50MzJfdCBpcHVfdXBkYXRlX2NoYW5uZWxfYnVmZmVyKGlwdV9jaGFubmVsX3QgY2hhbm5lbCwgaXB1X2J1ZmZlcl90IHR5cGUsCisJCQkJICB1aW50MzJfdCBidWZOdW0sIGRtYV9hZGRyX3QgcGh5YWRkcik7CisKK2ludDMyX3QgaXB1X2lzX2NoYW5uZWxfYnVzeShpcHVfY2hhbm5lbF90IGNoYW5uZWwpOwordm9pZCBpcHVfY2xlYXJfYnVmZmVyX3JlYWR5KGlwdV9jaGFubmVsX3QgY2hhbm5lbCwgaXB1X2J1ZmZlcl90IHR5cGUsCisJCXVpbnQzMl90IGJ1Zk51bSk7CitpbnQzMl90IGlwdV9lbmFibGVfY2hhbm5lbChpcHVfY2hhbm5lbF90IGNoYW5uZWwpOworaW50MzJfdCBpcHVfZGlzYWJsZV9jaGFubmVsKGlwdV9jaGFubmVsX3QgY2hhbm5lbCk7CisKK2ludDMyX3QgaXB1X2luaXRfc3luY19wYW5lbChpbnQgZGlzcCwKKwkJCSAgICB1aW50MzJfdCBwaXhlbF9jbGssCisJCQkgICAgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwKKwkJCSAgICB1aW50MzJfdCBwaXhlbF9mbXQsCisJCQkgICAgdWludDE2X3QgaF9zdGFydF93aWR0aCwgdWludDE2X3QgaF9zeW5jX3dpZHRoLAorCQkJICAgIHVpbnQxNl90IGhfZW5kX3dpZHRoLCB1aW50MTZfdCB2X3N0YXJ0X3dpZHRoLAorCQkJICAgIHVpbnQxNl90IHZfc3luY193aWR0aCwgdWludDE2X3Qgdl9lbmRfd2lkdGgsCisJCQkgICAgdWludDMyX3Qgdl90b19oX3N5bmMsIGlwdV9kaV9zaWduYWxfY2ZnX3Qgc2lnKTsKKworaW50MzJfdCBpcHVfZGlzcF9zZXRfZ2xvYmFsX2FscGhhKGlwdV9jaGFubmVsX3QgY2hhbm5lbCwgdW5zaWduZWQgY2hhciBlbmFibGUsCisJCQkJICB1aW50OF90IGFscGhhKTsKK2ludDMyX3QgaXB1X2Rpc3Bfc2V0X2NvbG9yX2tleShpcHVfY2hhbm5lbF90IGNoYW5uZWwsIHVuc2lnbmVkIGNoYXIgZW5hYmxlLAorCQkJICAgICAgIHVpbnQzMl90IGNvbG9yS2V5KTsKKwordWludDMyX3QgYnl0ZXNfcGVyX3BpeGVsKHVpbnQzMl90IGZtdCk7CisKK3ZvaWQgY2xrX2VuYWJsZShzdHJ1Y3QgY2xrICpjbGspOwordm9pZCBjbGtfZGlzYWJsZShzdHJ1Y3QgY2xrICpjbGspOwordTMyIGNsa19nZXRfcmF0ZShzdHJ1Y3QgY2xrICpjbGspOworaW50IGNsa19zZXRfcmF0ZShzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVkIGxvbmcgcmF0ZSk7Citsb25nIGNsa19yb3VuZF9yYXRlKHN0cnVjdCBjbGsgKmNsaywgdW5zaWduZWQgbG9uZyByYXRlKTsKK2ludCBjbGtfc2V0X3BhcmVudChzdHJ1Y3QgY2xrICpjbGssIHN0cnVjdCBjbGsgKnBhcmVudCk7CitpbnQgY2xrX2dldF91c2Vjb3VudChzdHJ1Y3QgY2xrICpjbGspOworc3RydWN0IGNsayAqY2xrX2dldF9wYXJlbnQoc3RydWN0IGNsayAqY2xrKTsKKwordm9pZCBpcHVfZHVtcF9yZWdpc3RlcnModm9pZCk7CitpbnQgaXB1X3Byb2JlKHZvaWQpOworCit2b2lkIGlwdV9kbWZjX2luaXQoaW50IGRtZmNfdHlwZSwgaW50IGZpcnN0KTsKK3ZvaWQgaXB1X2luaXRfZGNfbWFwcGluZ3Modm9pZCk7Cit2b2lkIGlwdV9kbWZjX3NldF93YWl0NGVvdChpbnQgZG1hX2NoYW4sIGludCB3aWR0aCk7Cit2b2lkIGlwdV9kY19pbml0KGludCBkY19jaGFuLCBpbnQgZGksIHVuc2lnbmVkIGNoYXIgaW50ZXJsYWNlZCk7Cit2b2lkIGlwdV9kY191bmluaXQoaW50IGRjX2NoYW4pOwordm9pZCBpcHVfZHBfZGNfZW5hYmxlKGlwdV9jaGFubmVsX3QgY2hhbm5lbCk7CitpbnQgaXB1X2RwX2luaXQoaXB1X2NoYW5uZWxfdCBjaGFubmVsLCB1aW50MzJfdCBpbl9waXhlbF9mbXQsCisJCSB1aW50MzJfdCBvdXRfcGl4ZWxfZm10KTsKK3ZvaWQgaXB1X2RwX3VuaW5pdChpcHVfY2hhbm5lbF90IGNoYW5uZWwpOwordm9pZCBpcHVfZHBfZGNfZGlzYWJsZShpcHVfY2hhbm5lbF90IGNoYW5uZWwsIHVuc2lnbmVkIGNoYXIgc3dhcCk7CitpcHVfY29sb3Jfc3BhY2VfdCBmb3JtYXRfdG9fY29sb3JzcGFjZSh1aW50MzJfdCBmbXQpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vaXB1X2NvbW1vbi5jIGIvZHJpdmVycy92aWRlby9pcHVfY29tbW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQyMGM4NgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvdmlkZW8vaXB1X2NvbW1vbi5jCkBAIC0wLDAgKzEsMTE4MyBAQAorLyoKKyAqIFBvcnRpbmcgdG8gdS1ib290OgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAxMAorICogU3RlZmFubyBCYWJpYywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgc2JhYmljQGRlbnguZGUKKyAqCisgKiBMaW51eCBJUFUgZHJpdmVyIGZvciBNWDUxOgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNS0yMDEwIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworLyogI2RlZmluZSBERUJVRyAqLworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2Vycm5vLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvaW14LXJlZ3MuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9jcm1fcmVncy5oPgorI2luY2x1ZGUgImlwdS5oIgorI2luY2x1ZGUgImlwdV9yZWdzLmgiCisKK2V4dGVybiBzdHJ1Y3QgbXhjX2NjbV9yZWcgKm14Y19jY207CitleHRlcm4gdTMyICppcHVfY3BtZW1fYmFzZTsKKworc3RydWN0IGlwdV9jaF9wYXJhbV93b3JkIHsKKwl1aW50MzJfdCBkYXRhWzVdOworCXVpbnQzMl90IHJlc1szXTsKK307CisKK3N0cnVjdCBpcHVfY2hfcGFyYW0geworCXN0cnVjdCBpcHVfY2hfcGFyYW1fd29yZCB3b3JkWzJdOworfTsKKworI2RlZmluZSBpcHVfY2hfcGFyYW1fYWRkcihjaCkgKCgoc3RydWN0IGlwdV9jaF9wYXJhbSAqKWlwdV9jcG1lbV9iYXNlKSArIChjaCkpCisKKyNkZWZpbmUgX3BhcmFtX3dvcmQoYmFzZSwgdykgXAorCSgoKHN0cnVjdCBpcHVfY2hfcGFyYW0gKikoYmFzZSkpLT53b3JkWyh3KV0uZGF0YSkKKworI2RlZmluZSBpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKGJhc2UsIHcsIGJpdCwgc2l6ZSwgdikgeyBcCisJaW50IGkgPSAoYml0KSAvIDMyOyBcCisJaW50IG9mZiA9IChiaXQpICUgMzI7IFwKKwlfcGFyYW1fd29yZChiYXNlLCB3KVtpXSB8PSAodikgPDwgb2ZmOyBcCisJaWYgKCgoYml0KSArIChzaXplKSAtIDEpIC8gMzIgPiBpKSB7IFwKKwkJX3BhcmFtX3dvcmQoYmFzZSwgdylbaSArIDFdIHw9ICh2KSA+PiAob2ZmID8gKDMyIC0gb2ZmKSA6IDApOyBcCisJfSBcCit9CisKKyNkZWZpbmUgaXB1X2NoX3BhcmFtX21vZF9maWVsZChiYXNlLCB3LCBiaXQsIHNpemUsIHYpIHsgXAorCWludCBpID0gKGJpdCkgLyAzMjsgXAorCWludCBvZmYgPSAoYml0KSAlIDMyOyBcCisJdTMyIG1hc2sgPSAoMVVMIDw8IHNpemUpIC0gMTsgXAorCXUzMiB0ZW1wID0gX3BhcmFtX3dvcmQoYmFzZSwgdylbaV07IFwKKwl0ZW1wICY9IH4obWFzayA8PCBvZmYpOyBcCisJX3BhcmFtX3dvcmQoYmFzZSwgdylbaV0gPSB0ZW1wIHwgKHYpIDw8IG9mZjsgXAorCWlmICgoKGJpdCkgKyAoc2l6ZSkgLSAxKSAvIDMyID4gaSkgeyBcCisJCXRlbXAgPSBfcGFyYW1fd29yZChiYXNlLCB3KVtpICsgMV07IFwKKwkJdGVtcCAmPSB+KG1hc2sgPj4gKDMyIC0gb2ZmKSk7IFwKKwkJX3BhcmFtX3dvcmQoYmFzZSwgdylbaSArIDFdID0gXAorCQkJdGVtcCB8ICgodikgPj4gKG9mZiA/ICgzMiAtIG9mZikgOiAwKSk7IFwKKwl9IFwKK30KKworI2RlZmluZSBpcHVfY2hfcGFyYW1fcmVhZF9maWVsZChiYXNlLCB3LCBiaXQsIHNpemUpICh7IFwKKwl1MzIgdGVtcDI7IFwKKwlpbnQgaSA9IChiaXQpIC8gMzI7IFwKKwlpbnQgb2ZmID0gKGJpdCkgJSAzMjsgXAorCXUzMiBtYXNrID0gKDFVTCA8PCBzaXplKSAtIDE7IFwKKwl1MzIgdGVtcDEgPSBfcGFyYW1fd29yZChiYXNlLCB3KVtpXTsgXAorCXRlbXAxID0gbWFzayAmICh0ZW1wMSA+PiBvZmYpOyBcCisJaWYgKCgoYml0KSsoc2l6ZSkgLSAxKSAvIDMyID4gaSkgeyBcCisJCXRlbXAyID0gX3BhcmFtX3dvcmQoYmFzZSwgdylbaSArIDFdOyBcCisJCXRlbXAyICY9IG1hc2sgPj4gKG9mZiA/ICgzMiAtIG9mZikgOiAwKTsgXAorCQl0ZW1wMSB8PSB0ZW1wMiA8PCAob2ZmID8gKDMyIC0gb2ZmKSA6IDApOyBcCisJfSBcCisJdGVtcDE7IFwKK30pCisKKwordm9pZCBjbGtfZW5hYmxlKHN0cnVjdCBjbGsgKmNsaykKK3sKKwlpZiAoY2xrKSB7CisJCWlmIChjbGstPnVzZWNvdW50KysgPT0gMCkgeworCQkJY2xrLT5lbmFibGUoY2xrKTsKKwkJfQorCX0KK30KKwordm9pZCBjbGtfZGlzYWJsZShzdHJ1Y3QgY2xrICpjbGspCit7CisJaWYgKGNsaykgeworCQlpZiAoISgtLWNsay0+dXNlY291bnQpKSB7CisJCQlpZiAoY2xrLT5kaXNhYmxlKQorCQkJCWNsay0+ZGlzYWJsZShjbGspOworCQl9CisJfQorfQorCitpbnQgY2xrX2dldF91c2Vjb3VudChzdHJ1Y3QgY2xrICpjbGspCit7CisJaWYgKGNsayA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBjbGstPnVzZWNvdW50OworfQorCit1MzIgY2xrX2dldF9yYXRlKHN0cnVjdCBjbGsgKmNsaykKK3sKKwlpZiAoIWNsaykKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gY2xrLT5yYXRlOworfQorCitzdHJ1Y3QgY2xrICpjbGtfZ2V0X3BhcmVudChzdHJ1Y3QgY2xrICpjbGspCit7CisJaWYgKCFjbGspCisJCXJldHVybiAwOworCisJcmV0dXJuIGNsay0+cGFyZW50OworfQorCitpbnQgY2xrX3NldF9yYXRlKHN0cnVjdCBjbGsgKmNsaywgdW5zaWduZWQgbG9uZyByYXRlKQoreworCWlmIChjbGsgJiYgY2xrLT5zZXRfcmF0ZSkKKwkJY2xrLT5zZXRfcmF0ZShjbGssIHJhdGUpOworCXJldHVybiBjbGstPnJhdGU7Cit9CisKK2xvbmcgY2xrX3JvdW5kX3JhdGUoc3RydWN0IGNsayAqY2xrLCB1bnNpZ25lZCBsb25nIHJhdGUpCit7CisJaWYgKGNsayA9PSBOVUxMIHx8ICFjbGstPnJvdW5kX3JhdGUpCisJCXJldHVybiAwOworCisJcmV0dXJuIGNsay0+cm91bmRfcmF0ZShjbGssIHJhdGUpOworfQorCitpbnQgY2xrX3NldF9wYXJlbnQoc3RydWN0IGNsayAqY2xrLCBzdHJ1Y3QgY2xrICpwYXJlbnQpCit7CisJY2xrLT5wYXJlbnQgPSBwYXJlbnQ7CisJaWYgKGNsay0+c2V0X3BhcmVudCkKKwkJcmV0dXJuIGNsay0+c2V0X3BhcmVudChjbGssIHBhcmVudCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY2xrX2lwdV9lbmFibGUoc3RydWN0IGNsayAqY2xrKQoreworCXUzMiByZWc7CisKKwlyZWcgPSBfX3Jhd19yZWFkbChjbGstPmVuYWJsZV9yZWcpOworCXJlZyB8PSBNWENfQ0NNX0NDR1JfQ0dfTUFTSyA8PCBjbGstPmVuYWJsZV9zaGlmdDsKKwlfX3Jhd193cml0ZWwocmVnLCBjbGstPmVuYWJsZV9yZWcpOworCisJLyogSGFuZHNoYWtlIHdpdGggSVBVIHdoZW4gY2VydGFpbiBjbG9jayByYXRlcyBhcmUgY2hhbmdlZC4gKi8KKwlyZWcgPSBfX3Jhd19yZWFkbCgmbXhjX2NjbS0+Y2Nkcik7CisJcmVnICY9IH5NWENfQ0NNX0NDRFJfSVBVX0hTX01BU0s7CisJX19yYXdfd3JpdGVsKHJlZywgJm14Y19jY20tPmNjZHIpOworCisJLyogSGFuZHNoYWtlIHdpdGggSVBVIHdoZW4gTFBNIGlzIGVudGVyZWQgYXMgaXRzIGVuYWJsZWQuICovCisJcmVnID0gX19yYXdfcmVhZGwoJm14Y19jY20tPmNscGNyKTsKKwlyZWcgJj0gfk1YQ19DQ01fQ0xQQ1JfQllQQVNTX0lQVV9MUE1fSFM7CisJX19yYXdfd3JpdGVsKHJlZywgJm14Y19jY20tPmNscGNyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBjbGtfaXB1X2Rpc2FibGUoc3RydWN0IGNsayAqY2xrKQoreworCXUzMiByZWc7CisKKwlyZWcgPSBfX3Jhd19yZWFkbChjbGstPmVuYWJsZV9yZWcpOworCXJlZyAmPSB+KE1YQ19DQ01fQ0NHUl9DR19NQVNLIDw8IGNsay0+ZW5hYmxlX3NoaWZ0KTsKKwlfX3Jhd193cml0ZWwocmVnLCBjbGstPmVuYWJsZV9yZWcpOworCisJLyoKKwkgKiBObyBoYW5kc2hha2Ugd2l0aCBJUFUgd2hlIGRpdmlkZXJzIGFyZSBjaGFuZ2VkCisJICogYXMgaXRzIG5vdCBlbmFibGVkLgorCSAqLworCXJlZyA9IF9fcmF3X3JlYWRsKCZteGNfY2NtLT5jY2RyKTsKKwlyZWcgfD0gTVhDX0NDTV9DQ0RSX0lQVV9IU19NQVNLOworCV9fcmF3X3dyaXRlbChyZWcsICZteGNfY2NtLT5jY2RyKTsKKworCS8qIE5vIGhhbmRzaGFrZSB3aXRoIElQVSB3aGVuIExQTSBpcyBlbnRlcmVkIGFzIGl0cyBub3QgZW5hYmxlZC4gKi8KKwlyZWcgPSBfX3Jhd19yZWFkbCgmbXhjX2NjbS0+Y2xwY3IpOworCXJlZyB8PSBNWENfQ0NNX0NMUENSX0JZUEFTU19JUFVfTFBNX0hTOworCV9fcmF3X3dyaXRlbChyZWcsICZteGNfY2NtLT5jbHBjcik7Cit9CisKKworc3RhdGljIHN0cnVjdCBjbGsgaXB1X2NsayA9IHsKKwkubmFtZSA9ICJpcHVfY2xrIiwKKwkucmF0ZSA9IDEzMzAwMDAwMCwKKwkuZW5hYmxlX3JlZyA9ICh1MzIgKikoTVhDX0NDTV9CQVNFICsKKwkJb2Zmc2V0b2Yoc3RydWN0IG14Y19jY21fcmVnLCBDQ0dSNSkpLAorCS5lbmFibGVfc2hpZnQgPSBNWENfQ0NNX0NDR1I1X0NHNV9PRkZTRVQsCisJLmVuYWJsZSA9IGNsa19pcHVfZW5hYmxlLAorCS5kaXNhYmxlID0gY2xrX2lwdV9kaXNhYmxlLAorCS51c2Vjb3VudCA9IDAsCit9OworCisvKiBHbG9iYWxzICovCitzdHJ1Y3QgY2xrICpnX2lwdV9jbGs7Cit1bnNpZ25lZCBjaGFyIGdfaXB1X2Nsa19lbmFibGVkOworc3RydWN0IGNsayAqZ19kaV9jbGtbMl07CitzdHJ1Y3QgY2xrICpnX3BpeGVsX2Nsa1syXTsKK3Vuc2lnbmVkIGNoYXIgZ19kY19kaV9hc3NpZ25tZW50WzEwXTsKK3VpbnQzMl90IGdfY2hhbm5lbF9pbml0X21hc2s7Cit1aW50MzJfdCBnX2NoYW5uZWxfZW5hYmxlX21hc2s7CisKK3N0YXRpYyBpbnQgaXB1X2RjX3VzZV9jb3VudDsKK3N0YXRpYyBpbnQgaXB1X2RwX3VzZV9jb3VudDsKK3N0YXRpYyBpbnQgaXB1X2RtZmNfdXNlX2NvdW50Oworc3RhdGljIGludCBpcHVfZGlfdXNlX2NvdW50WzJdOworCit1MzIgKmlwdV9jcG1lbV9iYXNlOwordTMyICppcHVfZGNfdG1wbF9yZWc7CisKKy8qIFN0YXRpYyBmdW5jdGlvbnMgKi8KKworc3RhdGljIGlubGluZSB2b2lkIGlwdV9jaF9wYXJhbV9zZXRfaGlnaF9wcmlvcml0eSh1aW50MzJfdCBjaCkKK3sKKwlpcHVfY2hfcGFyYW1fbW9kX2ZpZWxkKGlwdV9jaF9wYXJhbV9hZGRyKGNoKSwgMSwgOTMsIDIsIDEpOworfTsKKworc3RhdGljIGlubGluZSB1aW50MzJfdCBjaGFubmVsXzJfZG1hKGlwdV9jaGFubmVsX3QgY2gsIGlwdV9idWZmZXJfdCB0eXBlKQoreworCXJldHVybiAoKHVpbnQzMl90KSBjaCA+PiAoNiAqIHR5cGUpKSAmIDB4M0Y7Cit9OworCisvKiBFaXRoZXIgRFAgQkcgb3IgRFAgRkcgY2FuIGJlIGdyYXBoaWMgd2luZG93ICovCitzdGF0aWMgaW5saW5lIGludCBpcHVfaXNfZHBfZ3JhcGhpY19jaGFuKHVpbnQzMl90IGRtYV9jaGFuKQoreworCXJldHVybiAoZG1hX2NoYW4gPT0gMjMgfHwgZG1hX2NoYW4gPT0gMjcpOworfQorCitzdGF0aWMgaW5saW5lIGludCBpcHVfaXNfZG1mY19jaGFuKHVpbnQzMl90IGRtYV9jaGFuKQoreworCXJldHVybiAoKGRtYV9jaGFuID49IDIzKSAmJiAoZG1hX2NoYW4gPD0gMjkpKTsKK30KKworCitzdGF0aWMgaW5saW5lIHZvaWQgaXB1X2NoX3BhcmFtX3NldF9idWZmZXIodWludDMyX3QgY2gsIGludCBidWZOdW0sCisJCQkJCSAgICBkbWFfYWRkcl90IHBoeWFkZHIpCit7CisJaXB1X2NoX3BhcmFtX21vZF9maWVsZChpcHVfY2hfcGFyYW1fYWRkcihjaCksIDEsIDI5ICogYnVmTnVtLCAyOSwKKwkJCSAgICAgICBwaHlhZGRyIC8gOCk7Cit9OworCisjZGVmaW5lIGlkbWFfaXNfdmFsaWQoY2gpCShjaCAhPSBOT19ETUEpCisjZGVmaW5lIGlkbWFfbWFzayhjaCkJCShpZG1hX2lzX3ZhbGlkKGNoKSA/ICgxVUwgPDwgKGNoICYgMHgxRikpIDogMCkKKyNkZWZpbmUgaWRtYV9pc19zZXQocmVnLCBkbWEpCShfX3Jhd19yZWFkbChyZWcoZG1hKSkgJiBpZG1hX21hc2soZG1hKSkKKworc3RhdGljIHZvaWQgaXB1X3BpeGVsX2Nsa19yZWNhbGMoc3RydWN0IGNsayAqY2xrKQoreworCXUzMiBkaXYgPSBfX3Jhd19yZWFkbChESV9CU19DTEtHRU4wKGNsay0+aWQpKTsKKwlpZiAoZGl2ID09IDApCisJCWNsay0+cmF0ZSA9IDA7CisJZWxzZQorCQljbGstPnJhdGUgPSAoY2xrLT5wYXJlbnQtPnJhdGUgKiAxNikgLyBkaXY7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGlwdV9waXhlbF9jbGtfcm91bmRfcmF0ZShzdHJ1Y3QgY2xrICpjbGssCisJdW5zaWduZWQgbG9uZyByYXRlKQoreworCXUzMiBkaXYsIGRpdjE7CisJdTMyIHRtcDsKKwkvKgorCSAqIENhbGN1bGF0ZSBkaXZpZGVyCisJICogRnJhY3Rpb25hbCBwYXJ0IGlzIDQgYml0cywKKwkgKiBzbyBzaW1wbHkgbXVsdGlwbHkgYnkgMl40IHRvIGdldCBmcmFjdGlvbmFsIHBhcnQuCisJICovCisJdG1wID0gKGNsay0+cGFyZW50LT5yYXRlICogMTYpOworCWRpdiA9IHRtcCAvIHJhdGU7CisKKwlpZiAoZGl2IDwgMHgxMCkgICAgICAgICAgICAvKiBNaW4gREkgZGlzcCBjbG9jayBkaXZpZGVyIGlzIDEgKi8KKwkJZGl2ID0gMHgxMDsKKwlpZiAoZGl2ICYgfjB4RkVGKQorCQlkaXYgJj0gMHhGRjg7CisJZWxzZSB7CisJCWRpdjEgPSBkaXYgJiAweEZFMDsKKwkJaWYgKCh0bXAvZGl2MSAtIHRtcC9kaXYpIDwgcmF0ZSAvIDQpCisJCQlkaXYgPSBkaXYxOworCQllbHNlCisJCQlkaXYgJj0gMHhGRjg7CisJfQorCXJldHVybiAoY2xrLT5wYXJlbnQtPnJhdGUgKiAxNikgLyBkaXY7Cit9CisKK3N0YXRpYyBpbnQgaXB1X3BpeGVsX2Nsa19zZXRfcmF0ZShzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVkIGxvbmcgcmF0ZSkKK3sKKwl1MzIgZGl2ID0gKGNsay0+cGFyZW50LT5yYXRlICogMTYpIC8gcmF0ZTsKKworCV9fcmF3X3dyaXRlbChkaXYsIERJX0JTX0NMS0dFTjAoY2xrLT5pZCkpOworCisJLyogU2V0dXAgcGl4ZWwgY2xvY2sgdGltaW5nICovCisJX19yYXdfd3JpdGVsKChkaXYgLyAxNikgPDwgMTYsIERJX0JTX0NMS0dFTjEoY2xrLT5pZCkpOworCisJY2xrLT5yYXRlID0gKGNsay0+cGFyZW50LT5yYXRlICogMTYpIC8gZGl2OworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlwdV9waXhlbF9jbGtfZW5hYmxlKHN0cnVjdCBjbGsgKmNsaykKK3sKKwl1MzIgZGlzcF9nZW4gPSBfX3Jhd19yZWFkbChJUFVfRElTUF9HRU4pOworCWRpc3BfZ2VuIHw9IGNsay0+aWQgPyBESTFfQ09VTlRFUl9SRUxFQVNFIDogREkwX0NPVU5URVJfUkVMRUFTRTsKKwlfX3Jhd193cml0ZWwoZGlzcF9nZW4sIElQVV9ESVNQX0dFTik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaXB1X3BpeGVsX2Nsa19kaXNhYmxlKHN0cnVjdCBjbGsgKmNsaykKK3sKKwl1MzIgZGlzcF9nZW4gPSBfX3Jhd19yZWFkbChJUFVfRElTUF9HRU4pOworCWRpc3BfZ2VuICY9IGNsay0+aWQgPyB+REkxX0NPVU5URVJfUkVMRUFTRSA6IH5ESTBfQ09VTlRFUl9SRUxFQVNFOworCV9fcmF3X3dyaXRlbChkaXNwX2dlbiwgSVBVX0RJU1BfR0VOKTsKKworfQorCitzdGF0aWMgaW50IGlwdV9waXhlbF9jbGtfc2V0X3BhcmVudChzdHJ1Y3QgY2xrICpjbGssIHN0cnVjdCBjbGsgKnBhcmVudCkKK3sKKwl1MzIgZGlfZ2VuID0gX19yYXdfcmVhZGwoRElfR0VORVJBTChjbGstPmlkKSk7CisKKwlpZiAocGFyZW50ID09IGdfaXB1X2NsaykKKwkJZGlfZ2VuICY9IH5ESV9HRU5fRElfQ0xLX0VYVDsKKwllbHNlIGlmICghSVNfRVJSKGdfZGlfY2xrW2Nsay0+aWRdKSAmJiBwYXJlbnQgPT0gZ19kaV9jbGtbY2xrLT5pZF0pCisJCWRpX2dlbiB8PSBESV9HRU5fRElfQ0xLX0VYVDsKKwllbHNlCisJCXJldHVybiAtRUlOVkFMOworCisJX19yYXdfd3JpdGVsKGRpX2dlbiwgRElfR0VORVJBTChjbGstPmlkKSk7CisJaXB1X3BpeGVsX2Nsa19yZWNhbGMoY2xrKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBjbGsgcGl4ZWxfY2xrW10gPSB7CisJeworCS5uYW1lID0gInBpeGVsX2NsayIsCisJLmlkID0gMCwKKwkucmVjYWxjID0gaXB1X3BpeGVsX2Nsa19yZWNhbGMsCisJLnNldF9yYXRlID0gaXB1X3BpeGVsX2Nsa19zZXRfcmF0ZSwKKwkucm91bmRfcmF0ZSA9IGlwdV9waXhlbF9jbGtfcm91bmRfcmF0ZSwKKwkuc2V0X3BhcmVudCA9IGlwdV9waXhlbF9jbGtfc2V0X3BhcmVudCwKKwkuZW5hYmxlID0gaXB1X3BpeGVsX2Nsa19lbmFibGUsCisJLmRpc2FibGUgPSBpcHVfcGl4ZWxfY2xrX2Rpc2FibGUsCisJLnVzZWNvdW50ID0gMCwKKwl9LAorCXsKKwkubmFtZSA9ICJwaXhlbF9jbGsiLAorCS5pZCA9IDEsCisJLnJlY2FsYyA9IGlwdV9waXhlbF9jbGtfcmVjYWxjLAorCS5zZXRfcmF0ZSA9IGlwdV9waXhlbF9jbGtfc2V0X3JhdGUsCisJLnJvdW5kX3JhdGUgPSBpcHVfcGl4ZWxfY2xrX3JvdW5kX3JhdGUsCisJLnNldF9wYXJlbnQgPSBpcHVfcGl4ZWxfY2xrX3NldF9wYXJlbnQsCisJLmVuYWJsZSA9IGlwdV9waXhlbF9jbGtfZW5hYmxlLAorCS5kaXNhYmxlID0gaXB1X3BpeGVsX2Nsa19kaXNhYmxlLAorCS51c2Vjb3VudCA9IDAsCisJfSwKK307CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyBJUFUKKyAqLwordm9pZCBpcHVfcmVzZXQodm9pZCkKK3sKKwl1MzIgKnJlZzsKKwl1MzIgdmFsdWU7CisKKwlyZWcgPSAodTMyICopU1JDX0JBU0VfQUREUjsKKwl2YWx1ZSA9IF9fcmF3X3JlYWRsKHJlZyk7CisJdmFsdWUgPSB2YWx1ZSB8IFNXX0lQVV9SU1Q7CisJX19yYXdfd3JpdGVsKHZhbHVlLCByZWcpOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGRyaXZlciBmcmFtZXdvcmsgdG8gaW5pdGlhbGl6ZSB0aGUgSVBVCisgKiBoYXJkd2FyZS4KKyAqCisgKiBAcGFyYW0JZGV2CVRoZSBkZXZpY2Ugc3RydWN0dXJlIGZvciB0aGUgSVBVIHBhc3NlZCBpbiBieSB0aGUKKyAqCQkJZHJpdmVyIGZyYW1ld29yay4KKyAqCisgKiBAcmV0dXJuICAgICAgUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBlcnJvcgorICovCitpbnQgaXB1X3Byb2JlKHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyBpcHVfYmFzZTsKKwl1MzIgdGVtcDsKKworCXUzMiAqcmVnX2hzY19tY2QgPSAodTMyICopTUlQSV9IU0NfQkFTRV9BRERSOworCXUzMiAqcmVnX2hzY19teHRfY29uZiA9ICh1MzIgKikoTUlQSV9IU0NfQkFTRV9BRERSICsgMHg4MDApOworCisJIF9fcmF3X3dyaXRlbCgweEYwMCwgcmVnX2hzY19tY2QpOworCisJLyogQ1NJIG1vZGUgcmVzZXJ2ZWQqLworCXRlbXAgPSBfX3Jhd19yZWFkbChyZWdfaHNjX214dF9jb25mKTsKKwkgX19yYXdfd3JpdGVsKHRlbXAgfCAweDBGRiwgcmVnX2hzY19teHRfY29uZik7CisKKwl0ZW1wID0gX19yYXdfcmVhZGwocmVnX2hzY19teHRfY29uZik7CisJX19yYXdfd3JpdGVsKHRlbXAgfCAweDEwMDAwLCByZWdfaHNjX214dF9jb25mKTsKKworCWlwdV9iYXNlID0gSVBVX0NUUkxfQkFTRV9BRERSOworCWlwdV9jcG1lbV9iYXNlID0gKHUzMiAqKShpcHVfYmFzZSArIElQVV9DUE1FTV9SRUdfQkFTRSk7CisJaXB1X2RjX3RtcGxfcmVnID0gKHUzMiAqKShpcHVfYmFzZSArIElQVV9EQ19UTVBMX1JFR19CQVNFKTsKKworCWdfcGl4ZWxfY2xrWzBdID0gJnBpeGVsX2Nsa1swXTsKKwlnX3BpeGVsX2Nsa1sxXSA9ICZwaXhlbF9jbGtbMV07CisKKwlnX2lwdV9jbGsgPSAmaXB1X2NsazsKKwlkZWJ1ZygiaXB1X2NsayA9ICV1XG4iLCBjbGtfZ2V0X3JhdGUoZ19pcHVfY2xrKSk7CisKKwlpcHVfcmVzZXQoKTsKKworCWNsa19zZXRfcGFyZW50KGdfcGl4ZWxfY2xrWzBdLCBnX2lwdV9jbGspOworCWNsa19zZXRfcGFyZW50KGdfcGl4ZWxfY2xrWzFdLCBnX2lwdV9jbGspOworCWNsa19lbmFibGUoZ19pcHVfY2xrKTsKKworCWdfZGlfY2xrWzBdID0gTlVMTDsKKwlnX2RpX2Nsa1sxXSA9IE5VTEw7CisKKwlfX3Jhd193cml0ZWwoMHg4MDdGRkZGRiwgSVBVX01FTV9SU1QpOworCXdoaWxlIChfX3Jhd19yZWFkbChJUFVfTUVNX1JTVCkgJiAweDgwMDAwMDAwKQorCQk7CisKKwlpcHVfaW5pdF9kY19tYXBwaW5ncygpOworCisJX19yYXdfd3JpdGVsKDAsIElQVV9JTlRfQ1RSTCg1KSk7CisJX19yYXdfd3JpdGVsKDAsIElQVV9JTlRfQ1RSTCg2KSk7CisJX19yYXdfd3JpdGVsKDAsIElQVV9JTlRfQ1RSTCg5KSk7CisJX19yYXdfd3JpdGVsKDAsIElQVV9JTlRfQ1RSTCgxMCkpOworCisJLyogRE1GQyBJbml0ICovCisJaXB1X2RtZmNfaW5pdChETUZDX05PUk1BTCwgMSk7CisKKwkvKiBTZXQgc3luYyByZWZyZXNoIGNoYW5uZWxzIGFzIGhpZ2ggcHJpb3JpdHkgKi8KKwlfX3Jhd193cml0ZWwoMHgxODgwMDAwMEwsIElETUFDX0NIQV9QUkkoMCkpOworCisJLyogU2V0IE1DVV9UIHRvIGRpdmlkZSBNQ1UgYWNjZXNzIHdpbmRvdyBpbnRvIDIgKi8KKwlfX3Jhd193cml0ZWwoMHgwMDQwMDAwMEwgfCAoSVBVX01DVV9UX0RFRkFVTFQgPDwgMTgpLCBJUFVfRElTUF9HRU4pOworCisJY2xrX2Rpc2FibGUoZ19pcHVfY2xrKTsKKworCXJldHVybiAwOworfQorCit2b2lkIGlwdV9kdW1wX3JlZ2lzdGVycyh2b2lkKQoreworCWRlYnVnKCJJUFVfQ09ORiA9IFx0MHglMDhYXG4iLCBfX3Jhd19yZWFkbChJUFVfQ09ORikpOworCWRlYnVnKCJJRE1BQ19DT05GID0gXHQweCUwOFhcbiIsIF9fcmF3X3JlYWRsKElETUFDX0NPTkYpKTsKKwlkZWJ1ZygiSURNQUNfQ0hBX0VOMSA9IFx0MHglMDhYXG4iLAorCSAgICAgICBfX3Jhd19yZWFkbChJRE1BQ19DSEFfRU4oMCkpKTsKKwlkZWJ1ZygiSURNQUNfQ0hBX0VOMiA9IFx0MHglMDhYXG4iLAorCSAgICAgICBfX3Jhd19yZWFkbChJRE1BQ19DSEFfRU4oMzIpKSk7CisJZGVidWcoIklETUFDX0NIQV9QUkkxID0gXHQweCUwOFhcbiIsCisJICAgICAgIF9fcmF3X3JlYWRsKElETUFDX0NIQV9QUkkoMCkpKTsKKwlkZWJ1ZygiSURNQUNfQ0hBX1BSSTIgPSBcdDB4JTA4WFxuIiwKKwkgICAgICAgX19yYXdfcmVhZGwoSURNQUNfQ0hBX1BSSSgzMikpKTsKKwlkZWJ1ZygiSVBVX0NIQV9EQl9NT0RFX1NFTDAgPSBcdDB4JTA4WFxuIiwKKwkgICAgICAgX19yYXdfcmVhZGwoSVBVX0NIQV9EQl9NT0RFX1NFTCgwKSkpOworCWRlYnVnKCJJUFVfQ0hBX0RCX01PREVfU0VMMSA9IFx0MHglMDhYXG4iLAorCSAgICAgICBfX3Jhd19yZWFkbChJUFVfQ0hBX0RCX01PREVfU0VMKDMyKSkpOworCWRlYnVnKCJETUZDX1dSX0NIQU4gPSBcdDB4JTA4WFxuIiwKKwkgICAgICAgX19yYXdfcmVhZGwoRE1GQ19XUl9DSEFOKSk7CisJZGVidWcoIkRNRkNfV1JfQ0hBTl9ERUYgPSBcdDB4JTA4WFxuIiwKKwkgICAgICAgX19yYXdfcmVhZGwoRE1GQ19XUl9DSEFOX0RFRikpOworCWRlYnVnKCJETUZDX0RQX0NIQU4gPSBcdDB4JTA4WFxuIiwKKwkgICAgICAgX19yYXdfcmVhZGwoRE1GQ19EUF9DSEFOKSk7CisJZGVidWcoIkRNRkNfRFBfQ0hBTl9ERUYgPSBcdDB4JTA4WFxuIiwKKwkgICAgICAgX19yYXdfcmVhZGwoRE1GQ19EUF9DSEFOX0RFRikpOworCWRlYnVnKCJETUZDX0lDX0NUUkwgPSBcdDB4JTA4WFxuIiwKKwkgICAgICAgX19yYXdfcmVhZGwoRE1GQ19JQ19DVFJMKSk7CisJZGVidWcoIklQVV9GU19QUk9DX0ZMT1cxID0gXHQweCUwOFhcbiIsCisJICAgICAgIF9fcmF3X3JlYWRsKElQVV9GU19QUk9DX0ZMT1cxKSk7CisJZGVidWcoIklQVV9GU19QUk9DX0ZMT1cyID0gXHQweCUwOFhcbiIsCisJICAgICAgIF9fcmF3X3JlYWRsKElQVV9GU19QUk9DX0ZMT1cyKSk7CisJZGVidWcoIklQVV9GU19QUk9DX0ZMT1czID0gXHQweCUwOFhcbiIsCisJICAgICAgIF9fcmF3X3JlYWRsKElQVV9GU19QUk9DX0ZMT1czKSk7CisJZGVidWcoIklQVV9GU19ESVNQX0ZMT1cxID0gXHQweCUwOFhcbiIsCisJICAgICAgIF9fcmF3X3JlYWRsKElQVV9GU19ESVNQX0ZMT1cxKSk7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBpbml0aWFsaXplIGEgbG9naWNhbCBJUFUgY2hhbm5lbC4KKyAqCisgKiBAcGFyYW0gICAgICAgY2hhbm5lbCBJbnB1dCBwYXJhbWV0ZXIgZm9yIHRoZSBsb2dpY2FsIGNoYW5uZWwgSUQgdG8gaW5pdC4KKyAqCisgKiBAcGFyYW0gICAgICAgcGFyYW1zICBJbnB1dCBwYXJhbWV0ZXIgY29udGFpbmluZyB1bmlvbiBvZiBjaGFubmVsCisgKiAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBwYXJhbWV0ZXJzLgorICoKKyAqIEByZXR1cm4gICAgICBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWwKKyAqLworaW50MzJfdCBpcHVfaW5pdF9jaGFubmVsKGlwdV9jaGFubmVsX3QgY2hhbm5lbCwgaXB1X2NoYW5uZWxfcGFyYW1zX3QgKnBhcmFtcykKK3sKKwlpbnQgcmV0ID0gMDsKKwl1aW50MzJfdCBpcHVfY29uZjsKKworCWRlYnVnKCJpbml0IGNoYW5uZWwgPSAlZFxuIiwgSVBVX0NIQU5fSUQoY2hhbm5lbCkpOworCisJaWYgKGdfaXB1X2Nsa19lbmFibGVkID09IDApIHsKKwkJZ19pcHVfY2xrX2VuYWJsZWQgPSAxOworCQljbGtfZW5hYmxlKGdfaXB1X2Nsayk7CisJfQorCisKKwlpZiAoZ19jaGFubmVsX2luaXRfbWFzayAmICgxTCA8PCBJUFVfQ0hBTl9JRChjaGFubmVsKSkpIHsKKwkJcHJpbnRmKCJXYXJuaW5nOiBjaGFubmVsIGFscmVhZHkgaW5pdGlhbGl6ZWQgJWRcbiIsCisJCQlJUFVfQ0hBTl9JRChjaGFubmVsKSk7CisJfQorCisJaXB1X2NvbmYgPSBfX3Jhd19yZWFkbChJUFVfQ09ORik7CisKKwlzd2l0Y2ggKGNoYW5uZWwpIHsKKwljYXNlIE1FTV9EQ19TWU5DOgorCQlpZiAocGFyYW1zLT5tZW1fZGNfc3luYy5kaSA+IDEpIHsKKwkJCXJldCA9IC1FSU5WQUw7CisJCQlnb3RvIGVycjsKKwkJfQorCisJCWdfZGNfZGlfYXNzaWdubWVudFsxXSA9IHBhcmFtcy0+bWVtX2RjX3N5bmMuZGk7CisJCWlwdV9kY19pbml0KDEsIHBhcmFtcy0+bWVtX2RjX3N5bmMuZGksCisJCQkgICAgIHBhcmFtcy0+bWVtX2RjX3N5bmMuaW50ZXJsYWNlZCk7CisJCWlwdV9kaV91c2VfY291bnRbcGFyYW1zLT5tZW1fZGNfc3luYy5kaV0rKzsKKwkJaXB1X2RjX3VzZV9jb3VudCsrOworCQlpcHVfZG1mY191c2VfY291bnQrKzsKKwkJYnJlYWs7CisJY2FzZSBNRU1fQkdfU1lOQzoKKwkJaWYgKHBhcmFtcy0+bWVtX2RwX2JnX3N5bmMuZGkgPiAxKSB7CisJCQlyZXQgPSAtRUlOVkFMOworCQkJZ290byBlcnI7CisJCX0KKworCQlnX2RjX2RpX2Fzc2lnbm1lbnRbNV0gPSBwYXJhbXMtPm1lbV9kcF9iZ19zeW5jLmRpOworCQlpcHVfZHBfaW5pdChjaGFubmVsLCBwYXJhbXMtPm1lbV9kcF9iZ19zeW5jLmluX3BpeGVsX2ZtdCwKKwkJCSAgICAgcGFyYW1zLT5tZW1fZHBfYmdfc3luYy5vdXRfcGl4ZWxfZm10KTsKKwkJaXB1X2RjX2luaXQoNSwgcGFyYW1zLT5tZW1fZHBfYmdfc3luYy5kaSwKKwkJCSAgICAgcGFyYW1zLT5tZW1fZHBfYmdfc3luYy5pbnRlcmxhY2VkKTsKKwkJaXB1X2RpX3VzZV9jb3VudFtwYXJhbXMtPm1lbV9kcF9iZ19zeW5jLmRpXSsrOworCQlpcHVfZGNfdXNlX2NvdW50Kys7CisJCWlwdV9kcF91c2VfY291bnQrKzsKKwkJaXB1X2RtZmNfdXNlX2NvdW50Kys7CisJCWJyZWFrOworCWNhc2UgTUVNX0ZHX1NZTkM6CisJCWlwdV9kcF9pbml0KGNoYW5uZWwsIHBhcmFtcy0+bWVtX2RwX2ZnX3N5bmMuaW5fcGl4ZWxfZm10LAorCQkJICAgICBwYXJhbXMtPm1lbV9kcF9mZ19zeW5jLm91dF9waXhlbF9mbXQpOworCisJCWlwdV9kY191c2VfY291bnQrKzsKKwkJaXB1X2RwX3VzZV9jb3VudCsrOworCQlpcHVfZG1mY191c2VfY291bnQrKzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRmKCJNaXNzaW5nIGNoYW5uZWwgaW5pdGlhbGl6YXRpb25cbiIpOworCQlicmVhazsKKwl9CisKKwkvKiBFbmFibGUgSVBVIHN1YiBtb2R1bGUgKi8KKwlnX2NoYW5uZWxfaW5pdF9tYXNrIHw9IDFMIDw8IElQVV9DSEFOX0lEKGNoYW5uZWwpOworCWlmIChpcHVfZGNfdXNlX2NvdW50ID09IDEpCisJCWlwdV9jb25mIHw9IElQVV9DT05GX0RDX0VOOworCWlmIChpcHVfZHBfdXNlX2NvdW50ID09IDEpCisJCWlwdV9jb25mIHw9IElQVV9DT05GX0RQX0VOOworCWlmIChpcHVfZG1mY191c2VfY291bnQgPT0gMSkKKwkJaXB1X2NvbmYgfD0gSVBVX0NPTkZfRE1GQ19FTjsKKwlpZiAoaXB1X2RpX3VzZV9jb3VudFswXSA9PSAxKSB7CisJCWlwdV9jb25mIHw9IElQVV9DT05GX0RJMF9FTjsKKwl9CisJaWYgKGlwdV9kaV91c2VfY291bnRbMV0gPT0gMSkgeworCQlpcHVfY29uZiB8PSBJUFVfQ09ORl9ESTFfRU47CisJfQorCisJX19yYXdfd3JpdGVsKGlwdV9jb25mLCBJUFVfQ09ORik7CisKK2VycjoKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gdW5pbml0aWFsaXplIGEgbG9naWNhbCBJUFUgY2hhbm5lbC4KKyAqCisgKiBAcGFyYW0gICAgICAgY2hhbm5lbCBJbnB1dCBwYXJhbWV0ZXIgZm9yIHRoZSBsb2dpY2FsIGNoYW5uZWwgSUQgdG8gdW5pbml0LgorICovCit2b2lkIGlwdV91bmluaXRfY2hhbm5lbChpcHVfY2hhbm5lbF90IGNoYW5uZWwpCit7CisJdWludDMyX3QgcmVnOworCXVpbnQzMl90IGluX2RtYSwgb3V0X2RtYSA9IDA7CisJdWludDMyX3QgaXB1X2NvbmY7CisKKwlpZiAoKGdfY2hhbm5lbF9pbml0X21hc2sgJiAoMUwgPDwgSVBVX0NIQU5fSUQoY2hhbm5lbCkpKSA9PSAwKSB7CisJCWRlYnVnKCJDaGFubmVsIGFscmVhZHkgdW5pbml0aWFsaXplZCAlZFxuIiwKKwkJCUlQVV9DSEFOX0lEKGNoYW5uZWwpKTsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogTWFrZSBzdXJlIGNoYW5uZWwgaXMgZGlzYWJsZWQKKwkgKiBHZXQgaW5wdXQgYW5kIG91dHB1dCBkbWEgY2hhbm5lbHMKKwkgKi8KKwlpbl9kbWEgPSBjaGFubmVsXzJfZG1hKGNoYW5uZWwsIElQVV9PVVRQVVRfQlVGRkVSKTsKKwlvdXRfZG1hID0gY2hhbm5lbF8yX2RtYShjaGFubmVsLCBJUFVfVklERU9fSU5fQlVGRkVSKTsKKworCWlmIChpZG1hX2lzX3NldChJRE1BQ19DSEFfRU4sIGluX2RtYSkgfHwKKwkgICAgaWRtYV9pc19zZXQoSURNQUNfQ0hBX0VOLCBvdXRfZG1hKSkgeworCQlwcmludGYoCisJCQkiQ2hhbm5lbCAlZCBpcyBub3QgZGlzYWJsZWQsIGRpc2FibGUgZmlyc3RcbiIsCisJCQlJUFVfQ0hBTl9JRChjaGFubmVsKSk7CisJCXJldHVybjsKKwl9CisKKwlpcHVfY29uZiA9IF9fcmF3X3JlYWRsKElQVV9DT05GKTsKKworCS8qIFJlc2V0IHRoZSBkb3VibGUgYnVmZmVyICovCisJcmVnID0gX19yYXdfcmVhZGwoSVBVX0NIQV9EQl9NT0RFX1NFTChpbl9kbWEpKTsKKwlfX3Jhd193cml0ZWwocmVnICYgfmlkbWFfbWFzayhpbl9kbWEpLCBJUFVfQ0hBX0RCX01PREVfU0VMKGluX2RtYSkpOworCXJlZyA9IF9fcmF3X3JlYWRsKElQVV9DSEFfREJfTU9ERV9TRUwob3V0X2RtYSkpOworCV9fcmF3X3dyaXRlbChyZWcgJiB+aWRtYV9tYXNrKG91dF9kbWEpLCBJUFVfQ0hBX0RCX01PREVfU0VMKG91dF9kbWEpKTsKKworCXN3aXRjaCAoY2hhbm5lbCkgeworCWNhc2UgTUVNX0RDX1NZTkM6CisJCWlwdV9kY191bmluaXQoMSk7CisJCWlwdV9kaV91c2VfY291bnRbZ19kY19kaV9hc3NpZ25tZW50WzFdXS0tOworCQlpcHVfZGNfdXNlX2NvdW50LS07CisJCWlwdV9kbWZjX3VzZV9jb3VudC0tOworCQlicmVhazsKKwljYXNlIE1FTV9CR19TWU5DOgorCQlpcHVfZHBfdW5pbml0KGNoYW5uZWwpOworCQlpcHVfZGNfdW5pbml0KDUpOworCQlpcHVfZGlfdXNlX2NvdW50W2dfZGNfZGlfYXNzaWdubWVudFs1XV0tLTsKKwkJaXB1X2RjX3VzZV9jb3VudC0tOworCQlpcHVfZHBfdXNlX2NvdW50LS07CisJCWlwdV9kbWZjX3VzZV9jb3VudC0tOworCQlicmVhazsKKwljYXNlIE1FTV9GR19TWU5DOgorCQlpcHVfZHBfdW5pbml0KGNoYW5uZWwpOworCQlpcHVfZGNfdXNlX2NvdW50LS07CisJCWlwdV9kcF91c2VfY291bnQtLTsKKwkJaXB1X2RtZmNfdXNlX2NvdW50LS07CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKworCWdfY2hhbm5lbF9pbml0X21hc2sgJj0gfigxTCA8PCBJUFVfQ0hBTl9JRChjaGFubmVsKSk7CisKKwlpZiAoaXB1X2RjX3VzZV9jb3VudCA9PSAwKQorCQlpcHVfY29uZiAmPSB+SVBVX0NPTkZfRENfRU47CisJaWYgKGlwdV9kcF91c2VfY291bnQgPT0gMCkKKwkJaXB1X2NvbmYgJj0gfklQVV9DT05GX0RQX0VOOworCWlmIChpcHVfZG1mY191c2VfY291bnQgPT0gMCkKKwkJaXB1X2NvbmYgJj0gfklQVV9DT05GX0RNRkNfRU47CisJaWYgKGlwdV9kaV91c2VfY291bnRbMF0gPT0gMCkgeworCQlpcHVfY29uZiAmPSB+SVBVX0NPTkZfREkwX0VOOworCX0KKwlpZiAoaXB1X2RpX3VzZV9jb3VudFsxXSA9PSAwKSB7CisJCWlwdV9jb25mICY9IH5JUFVfQ09ORl9ESTFfRU47CisJfQorCisJX19yYXdfd3JpdGVsKGlwdV9jb25mLCBJUFVfQ09ORik7CisKKwlpZiAoaXB1X2NvbmYgPT0gMCkgeworCQljbGtfZGlzYWJsZShnX2lwdV9jbGspOworCQlnX2lwdV9jbGtfZW5hYmxlZCA9IDA7CisJfQorCit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpcHVfY2hfcGFyYW1fZHVtcChpbnQgY2gpCit7CisjaWZkZWYgREVCVUcKKwlzdHJ1Y3QgaXB1X2NoX3BhcmFtICpwID0gaXB1X2NoX3BhcmFtX2FkZHIoY2gpOworCWRlYnVnKCJjaCAlZCB3b3JkIDAgLSAlMDhYICUwOFggJTA4WCAlMDhYICUwOFhcbiIsIGNoLAorCQkgcC0+d29yZFswXS5kYXRhWzBdLCBwLT53b3JkWzBdLmRhdGFbMV0sIHAtPndvcmRbMF0uZGF0YVsyXSwKKwkJIHAtPndvcmRbMF0uZGF0YVszXSwgcC0+d29yZFswXS5kYXRhWzRdKTsKKwlkZWJ1ZygiY2ggJWQgd29yZCAxIC0gJTA4WCAlMDhYICUwOFggJTA4WCAlMDhYXG4iLCBjaCwKKwkJIHAtPndvcmRbMV0uZGF0YVswXSwgcC0+d29yZFsxXS5kYXRhWzFdLCBwLT53b3JkWzFdLmRhdGFbMl0sCisJCSBwLT53b3JkWzFdLmRhdGFbM10sIHAtPndvcmRbMV0uZGF0YVs0XSk7CisJZGVidWcoIlBGUyAweCV4LCAiLAorCQkgaXB1X2NoX3BhcmFtX3JlYWRfZmllbGQoaXB1X2NoX3BhcmFtX2FkZHIoY2gpLCAxLCA4NSwgNCkpOworCWRlYnVnKCJCUFAgMHgleCwgIiwKKwkJIGlwdV9jaF9wYXJhbV9yZWFkX2ZpZWxkKGlwdV9jaF9wYXJhbV9hZGRyKGNoKSwgMCwgMTA3LCAzKSk7CisJZGVidWcoIk5QQiAweCV4XG4iLAorCQkgaXB1X2NoX3BhcmFtX3JlYWRfZmllbGQoaXB1X2NoX3BhcmFtX2FkZHIoY2gpLCAxLCA3OCwgNykpOworCisJZGVidWcoIkZXICVkLCAiLAorCQkgaXB1X2NoX3BhcmFtX3JlYWRfZmllbGQoaXB1X2NoX3BhcmFtX2FkZHIoY2gpLCAwLCAxMjUsIDEzKSk7CisJZGVidWcoIkZIICVkLCAiLAorCQkgaXB1X2NoX3BhcmFtX3JlYWRfZmllbGQoaXB1X2NoX3BhcmFtX2FkZHIoY2gpLCAwLCAxMzgsIDEyKSk7CisJZGVidWcoIlN0cmlkZSAlZFxuIiwKKwkJIGlwdV9jaF9wYXJhbV9yZWFkX2ZpZWxkKGlwdV9jaF9wYXJhbV9hZGRyKGNoKSwgMSwgMTAyLCAxNCkpOworCisJZGVidWcoIldpZHRoMCAlZCsxLCAiLAorCQkgaXB1X2NoX3BhcmFtX3JlYWRfZmllbGQoaXB1X2NoX3BhcmFtX2FkZHIoY2gpLCAxLCAxMTYsIDMpKTsKKwlkZWJ1ZygiV2lkdGgxICVkKzEsICIsCisJCSBpcHVfY2hfcGFyYW1fcmVhZF9maWVsZChpcHVfY2hfcGFyYW1fYWRkcihjaCksIDEsIDExOSwgMykpOworCWRlYnVnKCJXaWR0aDIgJWQrMSwgIiwKKwkJIGlwdV9jaF9wYXJhbV9yZWFkX2ZpZWxkKGlwdV9jaF9wYXJhbV9hZGRyKGNoKSwgMSwgMTIyLCAzKSk7CisJZGVidWcoIldpZHRoMyAlZCsxLCAiLAorCQkgaXB1X2NoX3BhcmFtX3JlYWRfZmllbGQoaXB1X2NoX3BhcmFtX2FkZHIoY2gpLCAxLCAxMjUsIDMpKTsKKwlkZWJ1ZygiT2Zmc2V0MCAlZCwgIiwKKwkJIGlwdV9jaF9wYXJhbV9yZWFkX2ZpZWxkKGlwdV9jaF9wYXJhbV9hZGRyKGNoKSwgMSwgMTI4LCA1KSk7CisJZGVidWcoIk9mZnNldDEgJWQsICIsCisJCSBpcHVfY2hfcGFyYW1fcmVhZF9maWVsZChpcHVfY2hfcGFyYW1fYWRkcihjaCksIDEsIDEzMywgNSkpOworCWRlYnVnKCJPZmZzZXQyICVkLCAiLAorCQkgaXB1X2NoX3BhcmFtX3JlYWRfZmllbGQoaXB1X2NoX3BhcmFtX2FkZHIoY2gpLCAxLCAxMzgsIDUpKTsKKwlkZWJ1ZygiT2Zmc2V0MyAlZFxuIiwKKwkJIGlwdV9jaF9wYXJhbV9yZWFkX2ZpZWxkKGlwdV9jaF9wYXJhbV9hZGRyKGNoKSwgMSwgMTQzLCA1KSk7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSB2b2lkIGlwdV9jaF9wYXJhbXNfc2V0X3BhY2tpbmcoc3RydWN0IGlwdV9jaF9wYXJhbSAqcCwKKwkJCQkJICAgICAgaW50IHJlZF93aWR0aCwgaW50IHJlZF9vZmZzZXQsCisJCQkJCSAgICAgIGludCBncmVlbl93aWR0aCwgaW50IGdyZWVuX29mZnNldCwKKwkJCQkJICAgICAgaW50IGJsdWVfd2lkdGgsIGludCBibHVlX29mZnNldCwKKwkJCQkJICAgICAgaW50IGFscGhhX3dpZHRoLCBpbnQgYWxwaGFfb2Zmc2V0KQoreworCS8qIFNldHVwIHJlZCB3aWR0aCBhbmQgb2Zmc2V0ICovCisJaXB1X2NoX3BhcmFtX3NldF9maWVsZChwLCAxLCAxMTYsIDMsIHJlZF93aWR0aCAtIDEpOworCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQocCwgMSwgMTI4LCA1LCByZWRfb2Zmc2V0KTsKKwkvKiBTZXR1cCBncmVlbiB3aWR0aCBhbmQgb2Zmc2V0ICovCisJaXB1X2NoX3BhcmFtX3NldF9maWVsZChwLCAxLCAxMTksIDMsIGdyZWVuX3dpZHRoIC0gMSk7CisJaXB1X2NoX3BhcmFtX3NldF9maWVsZChwLCAxLCAxMzMsIDUsIGdyZWVuX29mZnNldCk7CisJLyogU2V0dXAgYmx1ZSB3aWR0aCBhbmQgb2Zmc2V0ICovCisJaXB1X2NoX3BhcmFtX3NldF9maWVsZChwLCAxLCAxMjIsIDMsIGJsdWVfd2lkdGggLSAxKTsKKwlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKHAsIDEsIDEzOCwgNSwgYmx1ZV9vZmZzZXQpOworCS8qIFNldHVwIGFscGhhIHdpZHRoIGFuZCBvZmZzZXQgKi8KKwlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKHAsIDEsIDEyNSwgMywgYWxwaGFfd2lkdGggLSAxKTsKKwlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKHAsIDEsIDE0MywgNSwgYWxwaGFfb2Zmc2V0KTsKK30KKworc3RhdGljIHZvaWQgaXB1X2NoX3BhcmFtX2luaXQoaW50IGNoLAorCQkJICAgICAgdWludDMyX3QgcGl4ZWxfZm10LCB1aW50MzJfdCB3aWR0aCwKKwkJCSAgICAgIHVpbnQzMl90IGhlaWdodCwgdWludDMyX3Qgc3RyaWRlLAorCQkJICAgICAgdWludDMyX3QgdSwgdWludDMyX3QgdiwKKwkJCSAgICAgIHVpbnQzMl90IHV2X3N0cmlkZSwgZG1hX2FkZHJfdCBhZGRyMCwKKwkJCSAgICAgIGRtYV9hZGRyX3QgYWRkcjEpCit7CisJdWludDMyX3QgdV9vZmZzZXQgPSAwOworCXVpbnQzMl90IHZfb2Zmc2V0ID0gMDsKKwlzdHJ1Y3QgaXB1X2NoX3BhcmFtIHBhcmFtczsKKworCW1lbXNldCgmcGFyYW1zLCAwLCBzaXplb2YocGFyYW1zKSk7CisKKwlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKCZwYXJhbXMsIDAsIDEyNSwgMTMsIHdpZHRoIC0gMSk7CisKKwlpZiAoKGNoID09IDgpIHx8IChjaCA9PSA5KSB8fCAoY2ggPT0gMTApKSB7CisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMCwgMTM4LCAxMiwgKGhlaWdodCAvIDIpIC0gMSk7CisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgMTAyLCAxNCwgKHN0cmlkZSAqIDIpIC0gMSk7CisJfSBlbHNlIHsKKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAwLCAxMzgsIDEyLCBoZWlnaHQgLSAxKTsKKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAxLCAxMDIsIDE0LCBzdHJpZGUgLSAxKTsKKwl9CisKKwlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKCZwYXJhbXMsIDEsIDAsIDI5LCBhZGRyMCA+PiAzKTsKKwlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKCZwYXJhbXMsIDEsIDI5LCAyOSwgYWRkcjEgPj4gMyk7CisKKwlzd2l0Y2ggKHBpeGVsX2ZtdCkgeworCWNhc2UgSVBVX1BJWF9GTVRfR0VORVJJQzoKKwkJLypSZXByZXNlbnRzIDgtYml0IEdlbmVyaWMgZGF0YSAqLworCQlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKCZwYXJhbXMsIDAsIDEwNywgMywgNSk7CS8qIGJpdHMvcGl4ZWwgKi8KKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAxLCA4NSwgNCwgNik7CS8qIHBpeCBmb3JtYXQgKi8KKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAxLCA3OCwgNywgNjMpOwkvKiBidXJzdCBzaXplICovCisKKwkJYnJlYWs7CisJY2FzZSBJUFVfUElYX0ZNVF9HRU5FUklDXzMyOgorCQkvKlJlcHJlc2VudHMgMzItYml0IEdlbmVyaWMgZGF0YSAqLworCQlicmVhazsKKwljYXNlIElQVV9QSVhfRk1UX1JHQjU2NToKKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAwLCAxMDcsIDMsIDMpOwkvKiBiaXRzL3BpeGVsICovCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgODUsIDQsIDcpOwkvKiBwaXggZm9ybWF0ICovCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgNzgsIDcsIDE1KTsJLyogYnVyc3Qgc2l6ZSAqLworCisJCWlwdV9jaF9wYXJhbXNfc2V0X3BhY2tpbmcoJnBhcmFtcywgNSwgMCwgNiwgNSwgNSwgMTEsIDgsIDE2KTsKKwkJYnJlYWs7CisJY2FzZSBJUFVfUElYX0ZNVF9CR1IyNDoKKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAwLCAxMDcsIDMsIDEpOwkvKiBiaXRzL3BpeGVsICovCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgODUsIDQsIDcpOwkvKiBwaXggZm9ybWF0ICovCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgNzgsIDcsIDE5KTsJLyogYnVyc3Qgc2l6ZSAqLworCisJCWlwdV9jaF9wYXJhbXNfc2V0X3BhY2tpbmcoJnBhcmFtcywgOCwgMCwgOCwgOCwgOCwgMTYsIDgsIDI0KTsKKwkJYnJlYWs7CisJY2FzZSBJUFVfUElYX0ZNVF9SR0IyNDoKKwljYXNlIElQVV9QSVhfRk1UX1lVVjQ0NDoKKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAwLCAxMDcsIDMsIDEpOwkvKiBiaXRzL3BpeGVsICovCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgODUsIDQsIDcpOwkvKiBwaXggZm9ybWF0ICovCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgNzgsIDcsIDE5KTsJLyogYnVyc3Qgc2l6ZSAqLworCisJCWlwdV9jaF9wYXJhbXNfc2V0X3BhY2tpbmcoJnBhcmFtcywgOCwgMTYsIDgsIDgsIDgsIDAsIDgsIDI0KTsKKwkJYnJlYWs7CisJY2FzZSBJUFVfUElYX0ZNVF9CR1JBMzI6CisJY2FzZSBJUFVfUElYX0ZNVF9CR1IzMjoKKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAwLCAxMDcsIDMsIDApOwkvKiBiaXRzL3BpeGVsICovCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgODUsIDQsIDcpOwkvKiBwaXggZm9ybWF0ICovCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgNzgsIDcsIDE1KTsJLyogYnVyc3Qgc2l6ZSAqLworCisJCWlwdV9jaF9wYXJhbXNfc2V0X3BhY2tpbmcoJnBhcmFtcywgOCwgOCwgOCwgMTYsIDgsIDI0LCA4LCAwKTsKKwkJYnJlYWs7CisJY2FzZSBJUFVfUElYX0ZNVF9SR0JBMzI6CisJY2FzZSBJUFVfUElYX0ZNVF9SR0IzMjoKKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAwLCAxMDcsIDMsIDApOwkvKiBiaXRzL3BpeGVsICovCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgODUsIDQsIDcpOwkvKiBwaXggZm9ybWF0ICovCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgNzgsIDcsIDE1KTsJLyogYnVyc3Qgc2l6ZSAqLworCisJCWlwdV9jaF9wYXJhbXNfc2V0X3BhY2tpbmcoJnBhcmFtcywgOCwgMjQsIDgsIDE2LCA4LCA4LCA4LCAwKTsKKwkJYnJlYWs7CisJY2FzZSBJUFVfUElYX0ZNVF9BQkdSMzI6CisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMCwgMTA3LCAzLCAwKTsJLyogYml0cy9waXhlbCAqLworCQlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKCZwYXJhbXMsIDEsIDg1LCA0LCA3KTsJLyogcGl4IGZvcm1hdCAqLworCisJCWlwdV9jaF9wYXJhbXNfc2V0X3BhY2tpbmcoJnBhcmFtcywgOCwgMCwgOCwgOCwgOCwgMTYsIDgsIDI0KTsKKwkJYnJlYWs7CisJY2FzZSBJUFVfUElYX0ZNVF9VWVZZOgorCQlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKCZwYXJhbXMsIDAsIDEwNywgMywgMyk7CS8qIGJpdHMvcGl4ZWwgKi8KKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAxLCA4NSwgNCwgMHhBKTsJLyogcGl4IGZvcm1hdCAqLworCQlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKCZwYXJhbXMsIDEsIDc4LCA3LCAxNSk7CS8qIGJ1cnN0IHNpemUgKi8KKwkJYnJlYWs7CisJY2FzZSBJUFVfUElYX0ZNVF9ZVVlWOgorCQlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKCZwYXJhbXMsIDAsIDEwNywgMywgMyk7CS8qIGJpdHMvcGl4ZWwgKi8KKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAxLCA4NSwgNCwgMHg4KTsJLyogcGl4IGZvcm1hdCAqLworCQlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKCZwYXJhbXMsIDEsIDc4LCA3LCAzMSk7CS8qIGJ1cnN0IHNpemUgKi8KKwkJYnJlYWs7CisJY2FzZSBJUFVfUElYX0ZNVF9ZVVY0MjBQMjoKKwljYXNlIElQVV9QSVhfRk1UX1lVVjQyMFA6CisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgODUsIDQsIDIpOwkvKiBwaXggZm9ybWF0ICovCisKKwkJaWYgKHV2X3N0cmlkZSA8IHN0cmlkZSAvIDIpCisJCQl1dl9zdHJpZGUgPSBzdHJpZGUgLyAyOworCisJCXVfb2Zmc2V0ID0gc3RyaWRlICogaGVpZ2h0OworCQl2X29mZnNldCA9IHVfb2Zmc2V0ICsgKHV2X3N0cmlkZSAqIGhlaWdodCAvIDIpOworCQkvKiBidXJzdCBzaXplICovCisJCWlmICgoY2ggPT0gOCkgfHwgKGNoID09IDkpIHx8IChjaCA9PSAxMCkpIHsKKwkJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgNzgsIDcsIDE1KTsKKwkJCXV2X3N0cmlkZSA9IHV2X3N0cmlkZSoyOworCQl9IGVsc2UgeworCQkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAxLCA3OCwgNywgMzEpOworCQl9CisJCWJyZWFrOworCWNhc2UgSVBVX1BJWF9GTVRfWVZVNDIyUDoKKwkJLyogQlBQICYgcGl4ZWwgZm9ybWF0ICovCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgODUsIDQsIDEpOwkvKiBwaXggZm9ybWF0ICovCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgNzgsIDcsIDMxKTsJLyogYnVyc3Qgc2l6ZSAqLworCisJCWlmICh1dl9zdHJpZGUgPCBzdHJpZGUgLyAyKQorCQkJdXZfc3RyaWRlID0gc3RyaWRlIC8gMjsKKworCQl2X29mZnNldCA9ICh2ID09IDApID8gc3RyaWRlICogaGVpZ2h0IDogdjsKKwkJdV9vZmZzZXQgPSAodSA9PSAwKSA/IHZfb2Zmc2V0ICsgdl9vZmZzZXQgLyAyIDogdTsKKwkJYnJlYWs7CisJY2FzZSBJUFVfUElYX0ZNVF9ZVVY0MjJQOgorCQkvKiBCUFAgJiBwaXhlbCBmb3JtYXQgKi8KKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAxLCA4NSwgNCwgMSk7CS8qIHBpeCBmb3JtYXQgKi8KKwkJaXB1X2NoX3BhcmFtX3NldF9maWVsZCgmcGFyYW1zLCAxLCA3OCwgNywgMzEpOwkvKiBidXJzdCBzaXplICovCisKKwkJaWYgKHV2X3N0cmlkZSA8IHN0cmlkZSAvIDIpCisJCQl1dl9zdHJpZGUgPSBzdHJpZGUgLyAyOworCisJCXVfb2Zmc2V0ID0gKHUgPT0gMCkgPyBzdHJpZGUgKiBoZWlnaHQgOiB1OworCQl2X29mZnNldCA9ICh2ID09IDApID8gdV9vZmZzZXQgKyB1X29mZnNldCAvIDIgOiB2OworCQlicmVhazsKKwljYXNlIElQVV9QSVhfRk1UX05WMTI6CisJCS8qIEJQUCAmIHBpeGVsIGZvcm1hdCAqLworCQlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKCZwYXJhbXMsIDEsIDg1LCA0LCA0KTsJLyogcGl4IGZvcm1hdCAqLworCQlpcHVfY2hfcGFyYW1fc2V0X2ZpZWxkKCZwYXJhbXMsIDEsIDc4LCA3LCAzMSk7CS8qIGJ1cnN0IHNpemUgKi8KKwkJdXZfc3RyaWRlID0gc3RyaWRlOworCQl1X29mZnNldCA9ICh1ID09IDApID8gc3RyaWRlICogaGVpZ2h0IDogdTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHV0cygibXhjIGlwdTogdW5pbXBsZW1lbnRlZCBwaXhlbCBmb3JtYXRcbiIpOworCQlicmVhazsKKwl9CisKKworCWlmICh1dl9zdHJpZGUpCisJCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMSwgMTI4LCAxNCwgdXZfc3RyaWRlIC0gMSk7CisKKwkvKiBHZXQgdGhlIHV2IG9mZnNldCBmcm9tIHVzZXIgd2hlbiBuZWVkIGNyb3BwaW5nICovCisJaWYgKHUgfHwgdikgeworCQl1X29mZnNldCA9IHU7CisJCXZfb2Zmc2V0ID0gdjsKKwl9CisKKwkvKiBVQk8gYW5kIFZCTyBhcmUgMjItYml0ICovCisJaWYgKHVfb2Zmc2V0LzggPiAweDNmZmZmZikKKwkJcHV0cygiVGhlIHZhbHVlIG9mIFUgb2Zmc2V0IGV4Y2VlZHMgSVBVIGxpbWl0YXRpb25cbiIpOworCWlmICh2X29mZnNldC84ID4gMHgzZmZmZmYpCisJCXB1dHMoIlRoZSB2YWx1ZSBvZiBWIG9mZnNldCBleGNlZWRzIElQVSBsaW1pdGF0aW9uXG4iKTsKKworCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMCwgNDYsIDIyLCB1X29mZnNldCAvIDgpOworCWlwdV9jaF9wYXJhbV9zZXRfZmllbGQoJnBhcmFtcywgMCwgNjgsIDIyLCB2X29mZnNldCAvIDgpOworCisJZGVidWcoImluaXRpYWxpemluZyBpZG1hIGNoICVkIEAgJXBcbiIsIGNoLCBpcHVfY2hfcGFyYW1fYWRkcihjaCkpOworCW1lbWNweShpcHVfY2hfcGFyYW1fYWRkcihjaCksICZwYXJhbXMsIHNpemVvZihwYXJhbXMpKTsKK307CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBpbml0aWFsaXplIGEgYnVmZmVyIGZvciBsb2dpY2FsIElQVSBjaGFubmVsLgorICoKKyAqIEBwYXJhbSAgICAgICBjaGFubmVsICAgICAgICAgSW5wdXQgcGFyYW1ldGVyIGZvciB0aGUgbG9naWNhbCBjaGFubmVsIElELgorICoKKyAqIEBwYXJhbSAgICAgICB0eXBlICAgICAgICAgICAgSW5wdXQgcGFyYW1ldGVyIHdoaWNoIGJ1ZmZlciB0byBpbml0aWFsaXplLgorICoKKyAqIEBwYXJhbSAgICAgICBwaXhlbF9mbXQgICAgICAgSW5wdXQgcGFyYW1ldGVyIGZvciBwaXhlbCBmb3JtYXQgb2YgYnVmZmVyLgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXhlbCBmb3JtYXQgaXMgYSBGT1VSQ0MgQVNDSUkgY29kZS4KKyAqCisgKiBAcGFyYW0gICAgICAgd2lkdGggICAgICAgICAgIElucHV0IHBhcmFtZXRlciBmb3Igd2lkdGggb2YgYnVmZmVyIGluIHBpeGVscy4KKyAqCisgKiBAcGFyYW0gICAgICAgaGVpZ2h0ICAgICAgICAgIElucHV0IHBhcmFtZXRlciBmb3IgaGVpZ2h0IG9mIGJ1ZmZlciBpbiBwaXhlbHMuCisgKgorICogQHBhcmFtICAgICAgIHN0cmlkZSAgICAgICAgICBJbnB1dCBwYXJhbWV0ZXIgZm9yIHN0cmlkZSBsZW5ndGggb2YgYnVmZmVyCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHBpeGVscy4KKyAqCisgKiBAcGFyYW0gICAgICAgcGh5YWRkcl8wICAgICAgIElucHV0IHBhcmFtZXRlciBidWZmZXIgMCBwaHlzaWNhbCBhZGRyZXNzLgorICoKKyAqIEBwYXJhbSAgICAgICBwaHlhZGRyXzEgICAgICAgSW5wdXQgcGFyYW1ldGVyIGJ1ZmZlciAxIHBoeXNpY2FsIGFkZHJlc3MuCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmcgdGhpcyB0byBhIHZhbHVlIG90aGVyIHRoYW4gTlVMTCBlbmFibGVzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBidWZmZXJpbmcgbW9kZS4KKyAqCisgKiBAcGFyYW0gICAgICAgdQkJcHJpdmF0ZSB1IG9mZnNldCBmb3IgYWRkaXRpb25hbCBjcm9wcGluZywKKyAqCQkJCXplcm8gaWYgbm90IHVzZWQuCisgKgorICogQHBhcmFtICAgICAgIHYJCXByaXZhdGUgdiBvZmZzZXQgZm9yIGFkZGl0aW9uYWwgY3JvcHBpbmcsCisgKgkJCQl6ZXJvIGlmIG5vdCB1c2VkLgorICoKKyAqIEByZXR1cm4gICAgICBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWwKKyAqLworaW50MzJfdCBpcHVfaW5pdF9jaGFubmVsX2J1ZmZlcihpcHVfY2hhbm5lbF90IGNoYW5uZWwsIGlwdV9idWZmZXJfdCB0eXBlLAorCQkJCXVpbnQzMl90IHBpeGVsX2ZtdCwKKwkJCQl1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LAorCQkJCXVpbnQzMl90IHN0cmlkZSwKKwkJCQlkbWFfYWRkcl90IHBoeWFkZHJfMCwgZG1hX2FkZHJfdCBwaHlhZGRyXzEsCisJCQkJdWludDMyX3QgdSwgdWludDMyX3QgdikKK3sKKwl1aW50MzJfdCByZWc7CisJdWludDMyX3QgZG1hX2NoYW47CisKKwlkbWFfY2hhbiA9IGNoYW5uZWxfMl9kbWEoY2hhbm5lbCwgdHlwZSk7CisJaWYgKCFpZG1hX2lzX3ZhbGlkKGRtYV9jaGFuKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoc3RyaWRlIDwgd2lkdGggKiBieXRlc19wZXJfcGl4ZWwocGl4ZWxfZm10KSkKKwkJc3RyaWRlID0gd2lkdGggKiBieXRlc19wZXJfcGl4ZWwocGl4ZWxfZm10KTsKKworCWlmIChzdHJpZGUgJSA0KSB7CisJCXByaW50ZigKKwkJCSJTdHJpZGUgbm90IDMyLWJpdCBhbGlnbmVkLCBzdHJpZGUgPSAlZFxuIiwgc3RyaWRlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCS8qIEJ1aWxkIHBhcmFtZXRlciBtZW1vcnkgZGF0YSBmb3IgRE1BIGNoYW5uZWwgKi8KKwlpcHVfY2hfcGFyYW1faW5pdChkbWFfY2hhbiwgcGl4ZWxfZm10LCB3aWR0aCwgaGVpZ2h0LCBzdHJpZGUsIHUsIHYsIDAsCisJCQkgICBwaHlhZGRyXzAsIHBoeWFkZHJfMSk7CisKKwlpZiAoaXB1X2lzX2RtZmNfY2hhbihkbWFfY2hhbikpIHsKKwkJaXB1X2RtZmNfc2V0X3dhaXQ0ZW90KGRtYV9jaGFuLCB3aWR0aCk7CisJfQorCisJaWYgKGlkbWFfaXNfc2V0KElETUFDX0NIQV9QUkksIGRtYV9jaGFuKSkKKwkJaXB1X2NoX3BhcmFtX3NldF9oaWdoX3ByaW9yaXR5KGRtYV9jaGFuKTsKKworCWlwdV9jaF9wYXJhbV9kdW1wKGRtYV9jaGFuKTsKKworCXJlZyA9IF9fcmF3X3JlYWRsKElQVV9DSEFfREJfTU9ERV9TRUwoZG1hX2NoYW4pKTsKKwlpZiAocGh5YWRkcl8xKQorCQlyZWcgfD0gaWRtYV9tYXNrKGRtYV9jaGFuKTsKKwllbHNlCisJCXJlZyAmPSB+aWRtYV9tYXNrKGRtYV9jaGFuKTsKKwlfX3Jhd193cml0ZWwocmVnLCBJUFVfQ0hBX0RCX01PREVfU0VMKGRtYV9jaGFuKSk7CisKKwkvKiBSZXNldCB0byBidWZmZXIgMCAqLworCV9fcmF3X3dyaXRlbChpZG1hX21hc2soZG1hX2NoYW4pLCBJUFVfQ0hBX0NVUl9CVUYoZG1hX2NoYW4pKTsKKworCXJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBlbmFibGVzIGEgbG9naWNhbCBjaGFubmVsLgorICoKKyAqIEBwYXJhbSAgICAgICBjaGFubmVsICAgICAgICAgSW5wdXQgcGFyYW1ldGVyIGZvciB0aGUgbG9naWNhbCBjaGFubmVsIElELgorICoKKyAqIEByZXR1cm4gICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMCBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24KKyAqICAgICAgICAgICAgICBmYWlsLgorICovCitpbnQzMl90IGlwdV9lbmFibGVfY2hhbm5lbChpcHVfY2hhbm5lbF90IGNoYW5uZWwpCit7CisJdWludDMyX3QgcmVnOworCXVpbnQzMl90IGluX2RtYTsKKwl1aW50MzJfdCBvdXRfZG1hOworCisJaWYgKGdfY2hhbm5lbF9lbmFibGVfbWFzayAmICgxTCA8PCBJUFVfQ0hBTl9JRChjaGFubmVsKSkpIHsKKwkJcHJpbnRmKCJXYXJuaW5nOiBjaGFubmVsIGFscmVhZHkgZW5hYmxlZCAlZFxuIiwKKwkJCUlQVV9DSEFOX0lEKGNoYW5uZWwpKTsKKwl9CisKKwkvKiBHZXQgaW5wdXQgYW5kIG91dHB1dCBkbWEgY2hhbm5lbHMgKi8KKwlvdXRfZG1hID0gY2hhbm5lbF8yX2RtYShjaGFubmVsLCBJUFVfT1VUUFVUX0JVRkZFUik7CisJaW5fZG1hID0gY2hhbm5lbF8yX2RtYShjaGFubmVsLCBJUFVfVklERU9fSU5fQlVGRkVSKTsKKworCWlmIChpZG1hX2lzX3ZhbGlkKGluX2RtYSkpIHsKKwkJcmVnID0gX19yYXdfcmVhZGwoSURNQUNfQ0hBX0VOKGluX2RtYSkpOworCQlfX3Jhd193cml0ZWwocmVnIHwgaWRtYV9tYXNrKGluX2RtYSksIElETUFDX0NIQV9FTihpbl9kbWEpKTsKKwl9CisJaWYgKGlkbWFfaXNfdmFsaWQob3V0X2RtYSkpIHsKKwkJcmVnID0gX19yYXdfcmVhZGwoSURNQUNfQ0hBX0VOKG91dF9kbWEpKTsKKwkJX19yYXdfd3JpdGVsKHJlZyB8IGlkbWFfbWFzayhvdXRfZG1hKSwgSURNQUNfQ0hBX0VOKG91dF9kbWEpKTsKKwl9CisKKwlpZiAoKGNoYW5uZWwgPT0gTUVNX0RDX1NZTkMpIHx8IChjaGFubmVsID09IE1FTV9CR19TWU5DKSB8fAorCSAgICAoY2hhbm5lbCA9PSBNRU1fRkdfU1lOQykpCisJCWlwdV9kcF9kY19lbmFibGUoY2hhbm5lbCk7CisKKwlnX2NoYW5uZWxfZW5hYmxlX21hc2sgfD0gMUwgPDwgSVBVX0NIQU5fSUQoY2hhbm5lbCk7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gY2xlYXIgYnVmZmVyIHJlYWR5IGZvciBhIGxvZ2ljYWwgY2hhbm5lbC4KKyAqCisgKiBAcGFyYW0gICAgICAgY2hhbm5lbCAgICAgICAgIElucHV0IHBhcmFtZXRlciBmb3IgdGhlIGxvZ2ljYWwgY2hhbm5lbCBJRC4KKyAqCisgKiBAcGFyYW0gICAgICAgdHlwZSAgICAgICAgICAgIElucHV0IHBhcmFtZXRlciB3aGljaCBidWZmZXIgdG8gY2xlYXIuCisgKgorICogQHBhcmFtICAgICAgIGJ1Zk51bSAgICAgICAgICBJbnB1dCBwYXJhbWV0ZXIgZm9yIHdoaWNoIGJ1ZmZlciBudW1iZXIgY2xlYXIKKyAqCQkJCXJlYWR5IHN0YXRlLgorICoKKyAqLwordm9pZCBpcHVfY2xlYXJfYnVmZmVyX3JlYWR5KGlwdV9jaGFubmVsX3QgY2hhbm5lbCwgaXB1X2J1ZmZlcl90IHR5cGUsCisJCXVpbnQzMl90IGJ1Zk51bSkKK3sKKwl1aW50MzJfdCBkbWFfY2ggPSBjaGFubmVsXzJfZG1hKGNoYW5uZWwsIHR5cGUpOworCisJaWYgKCFpZG1hX2lzX3ZhbGlkKGRtYV9jaCkpCisJCXJldHVybjsKKworCV9fcmF3X3dyaXRlbCgweEYwMDAwMDAwLCBJUFVfR1BSKTsgLyogd3JpdGUgb25lIHRvIGNsZWFyICovCisJaWYgKGJ1Zk51bSA9PSAwKSB7CisJCWlmIChpZG1hX2lzX3NldChJUFVfQ0hBX0JVRjBfUkRZLCBkbWFfY2gpKSB7CisJCQlfX3Jhd193cml0ZWwoaWRtYV9tYXNrKGRtYV9jaCksCisJCQkJCUlQVV9DSEFfQlVGMF9SRFkoZG1hX2NoKSk7CisJCX0KKwl9IGVsc2UgeworCQlpZiAoaWRtYV9pc19zZXQoSVBVX0NIQV9CVUYxX1JEWSwgZG1hX2NoKSkgeworCQkJX19yYXdfd3JpdGVsKGlkbWFfbWFzayhkbWFfY2gpLAorCQkJCQlJUFVfQ0hBX0JVRjFfUkRZKGRtYV9jaCkpOworCQl9CisJfQorCV9fcmF3X3dyaXRlbCgweDAsIElQVV9HUFIpOyAvKiB3cml0ZSBvbmUgdG8gc2V0ICovCit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIGEgbG9naWNhbCBjaGFubmVsLgorICoKKyAqIEBwYXJhbSAgICAgICBjaGFubmVsICAgICAgICAgSW5wdXQgcGFyYW1ldGVyIGZvciB0aGUgbG9naWNhbCBjaGFubmVsIElELgorICoKKyAqIEBwYXJhbSAgICAgICB3YWl0X2Zvcl9zdG9wICAgRmxhZyB0byBzZXQgd2hldGhlciB0byB3YWl0IGZvciBjaGFubmVsIGVuZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBmcmFtZSBvciByZXR1cm4gaW1tZWRpYXRlbHkuCisgKgorICogQHJldHVybiAgICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJyb3IgY29kZSBvbgorICogICAgICAgICAgICAgIGZhaWwuCisgKi8KK2ludDMyX3QgaXB1X2Rpc2FibGVfY2hhbm5lbChpcHVfY2hhbm5lbF90IGNoYW5uZWwpCit7CisJdWludDMyX3QgcmVnOworCXVpbnQzMl90IGluX2RtYTsKKwl1aW50MzJfdCBvdXRfZG1hOworCisJaWYgKChnX2NoYW5uZWxfZW5hYmxlX21hc2sgJiAoMUwgPDwgSVBVX0NIQU5fSUQoY2hhbm5lbCkpKSA9PSAwKSB7CisJCWRlYnVnKCJDaGFubmVsIGFscmVhZHkgZGlzYWJsZWQgJWRcbiIsCisJCQlJUFVfQ0hBTl9JRChjaGFubmVsKSk7CisJCXJldHVybiAwOworCX0KKworCS8qIEdldCBpbnB1dCBhbmQgb3V0cHV0IGRtYSBjaGFubmVscyAqLworCW91dF9kbWEgPSBjaGFubmVsXzJfZG1hKGNoYW5uZWwsIElQVV9PVVRQVVRfQlVGRkVSKTsKKwlpbl9kbWEgPSBjaGFubmVsXzJfZG1hKGNoYW5uZWwsIElQVV9WSURFT19JTl9CVUZGRVIpOworCisJaWYgKChpZG1hX2lzX3ZhbGlkKGluX2RtYSkgJiYKKwkJIWlkbWFfaXNfc2V0KElETUFDX0NIQV9FTiwgaW5fZG1hKSkKKwkJJiYgKGlkbWFfaXNfdmFsaWQob3V0X2RtYSkgJiYKKwkJIWlkbWFfaXNfc2V0KElETUFDX0NIQV9FTiwgb3V0X2RtYSkpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICgoY2hhbm5lbCA9PSBNRU1fQkdfU1lOQykgfHwgKGNoYW5uZWwgPT0gTUVNX0ZHX1NZTkMpIHx8CisJICAgIChjaGFubmVsID09IE1FTV9EQ19TWU5DKSkgeworCQlpcHVfZHBfZGNfZGlzYWJsZShjaGFubmVsLCAwKTsKKwl9CisKKwkvKiBEaXNhYmxlIERNQSBjaGFubmVsKHMpICovCisJaWYgKGlkbWFfaXNfdmFsaWQoaW5fZG1hKSkgeworCQlyZWcgPSBfX3Jhd19yZWFkbChJRE1BQ19DSEFfRU4oaW5fZG1hKSk7CisJCV9fcmF3X3dyaXRlbChyZWcgJiB+aWRtYV9tYXNrKGluX2RtYSksIElETUFDX0NIQV9FTihpbl9kbWEpKTsKKwkJX19yYXdfd3JpdGVsKGlkbWFfbWFzayhpbl9kbWEpLCBJUFVfQ0hBX0NVUl9CVUYoaW5fZG1hKSk7CisJfQorCWlmIChpZG1hX2lzX3ZhbGlkKG91dF9kbWEpKSB7CisJCXJlZyA9IF9fcmF3X3JlYWRsKElETUFDX0NIQV9FTihvdXRfZG1hKSk7CisJCV9fcmF3X3dyaXRlbChyZWcgJiB+aWRtYV9tYXNrKG91dF9kbWEpLCBJRE1BQ19DSEFfRU4ob3V0X2RtYSkpOworCQlfX3Jhd193cml0ZWwoaWRtYV9tYXNrKG91dF9kbWEpLCBJUFVfQ0hBX0NVUl9CVUYob3V0X2RtYSkpOworCX0KKworCWdfY2hhbm5lbF9lbmFibGVfbWFzayAmPSB+KDFMIDw8IElQVV9DSEFOX0lEKGNoYW5uZWwpKTsKKworCS8qIFNldCBjaGFubmVsIGJ1ZmZlcnMgTk9UIHRvIGJlIHJlYWR5ICovCisJaWYgKGlkbWFfaXNfdmFsaWQoaW5fZG1hKSkgeworCQlpcHVfY2xlYXJfYnVmZmVyX3JlYWR5KGNoYW5uZWwsIElQVV9WSURFT19JTl9CVUZGRVIsIDApOworCQlpcHVfY2xlYXJfYnVmZmVyX3JlYWR5KGNoYW5uZWwsIElQVV9WSURFT19JTl9CVUZGRVIsIDEpOworCX0KKwlpZiAoaWRtYV9pc192YWxpZChvdXRfZG1hKSkgeworCQlpcHVfY2xlYXJfYnVmZmVyX3JlYWR5KGNoYW5uZWwsIElQVV9PVVRQVVRfQlVGRkVSLCAwKTsKKwkJaXB1X2NsZWFyX2J1ZmZlcl9yZWFkeShjaGFubmVsLCBJUFVfT1VUUFVUX0JVRkZFUiwgMSk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3VpbnQzMl90IGJ5dGVzX3Blcl9waXhlbCh1aW50MzJfdCBmbXQpCit7CisJc3dpdGNoIChmbXQpIHsKKwljYXNlIElQVV9QSVhfRk1UX0dFTkVSSUM6CS8qZ2VuZXJpYyBkYXRhICovCisJY2FzZSBJUFVfUElYX0ZNVF9SR0IzMzI6CisJY2FzZSBJUFVfUElYX0ZNVF9ZVVY0MjBQOgorCWNhc2UgSVBVX1BJWF9GTVRfWVVWNDIyUDoKKwkJcmV0dXJuIDE7CisJCWJyZWFrOworCWNhc2UgSVBVX1BJWF9GTVRfUkdCNTY1OgorCWNhc2UgSVBVX1BJWF9GTVRfWVVZVjoKKwljYXNlIElQVV9QSVhfRk1UX1VZVlk6CisJCXJldHVybiAyOworCQlicmVhazsKKwljYXNlIElQVV9QSVhfRk1UX0JHUjI0OgorCWNhc2UgSVBVX1BJWF9GTVRfUkdCMjQ6CisJCXJldHVybiAzOworCQlicmVhazsKKwljYXNlIElQVV9QSVhfRk1UX0dFTkVSSUNfMzI6CS8qZ2VuZXJpYyBkYXRhICovCisJY2FzZSBJUFVfUElYX0ZNVF9CR1IzMjoKKwljYXNlIElQVV9QSVhfRk1UX0JHUkEzMjoKKwljYXNlIElQVV9QSVhfRk1UX1JHQjMyOgorCWNhc2UgSVBVX1BJWF9GTVRfUkdCQTMyOgorCWNhc2UgSVBVX1BJWF9GTVRfQUJHUjMyOgorCQlyZXR1cm4gNDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDE7CisJCWJyZWFrOworCX0KKwlyZXR1cm4gMDsKK30KKworaXB1X2NvbG9yX3NwYWNlX3QgZm9ybWF0X3RvX2NvbG9yc3BhY2UodWludDMyX3QgZm10KQoreworCXN3aXRjaCAoZm10KSB7CisJY2FzZSBJUFVfUElYX0ZNVF9SR0I2NjY6CisJY2FzZSBJUFVfUElYX0ZNVF9SR0I1NjU6CisJY2FzZSBJUFVfUElYX0ZNVF9CR1IyNDoKKwljYXNlIElQVV9QSVhfRk1UX1JHQjI0OgorCWNhc2UgSVBVX1BJWF9GTVRfQkdSMzI6CisJY2FzZSBJUFVfUElYX0ZNVF9CR1JBMzI6CisJY2FzZSBJUFVfUElYX0ZNVF9SR0IzMjoKKwljYXNlIElQVV9QSVhfRk1UX1JHQkEzMjoKKwljYXNlIElQVV9QSVhfRk1UX0FCR1IzMjoKKwljYXNlIElQVV9QSVhfRk1UX0xWRFM2NjY6CisJY2FzZSBJUFVfUElYX0ZNVF9MVkRTODg4OgorCQlyZXR1cm4gUkdCOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCXJldHVybiBZQ2JDcjsKKwkJYnJlYWs7CisJfQorCXJldHVybiBSR0I7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2lwdV9kaXNwLmMgYi9kcml2ZXJzL3ZpZGVvL2lwdV9kaXNwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFjZjk4ZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvdmlkZW8vaXB1X2Rpc3AuYwpAQCAtMCwwICsxLDEzNTkgQEAKKy8qCisgKiBQb3J0aW5nIHRvIHUtYm9vdDoKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMTAKKyAqIFN0ZWZhbm8gQmFiaWMsIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHNiYWJpY0BkZW54LmRlCisgKgorICogTGludXggSVBVIGRyaXZlciBmb3IgTVg1MToKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDUtMjAxMCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKy8qICNkZWZpbmUgREVCVUcgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8YXNtL2Vycm5vLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvaW14LXJlZ3MuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9zeXNfcHJvdG8uaD4KKyNpbmNsdWRlICJpcHUuaCIKKyNpbmNsdWRlICJpcHVfcmVncy5oIgorCitlbnVtIGNzY190eXBlX3QgeworCVJHQjJZVVYgPSAwLAorCVlVVjJSR0IsCisJUkdCMlJHQiwKKwlZVVYyWVVWLAorCUNTQ19OT05FLAorCUNTQ19OVU0KK307CisKK3N0cnVjdCBkcF9jc2NfcGFyYW1fdCB7CisJaW50IG1vZGU7CisJdm9pZCAqY29lZmY7Cit9OworCisjZGVmaW5lIFNZTkNfV0FWRSAwCisKKy8qIERDIGRpc3BsYXkgSUQgYXNzaWdubWVudHMgKi8KKyNkZWZpbmUgRENfRElTUF9JRF9TWU5DKGRpKQkoZGkpCisjZGVmaW5lIERDX0RJU1BfSURfU0VSSUFMCTIKKyNkZWZpbmUgRENfRElTUF9JRF9BU1lOQwkzCisKK2ludCBkbWZjX3R5cGVfc2V0dXA7CitzdGF0aWMgaW50IGRtZmNfc2l6ZV8yOCwgZG1mY19zaXplXzI5LCBkbWZjX3NpemVfMjQsIGRtZmNfc2l6ZV8yNywgZG1mY19zaXplXzIzOworaW50IGdfZGkxX3R2b3V0OworCitleHRlcm4gc3RydWN0IGNsayAqZ19pcHVfY2xrOworZXh0ZXJuIHN0cnVjdCBjbGsgKmdfZGlfY2xrWzJdOworZXh0ZXJuIHN0cnVjdCBjbGsgKmdfcGl4ZWxfY2xrWzJdOworCitleHRlcm4gdW5zaWduZWQgY2hhciBnX2lwdV9jbGtfZW5hYmxlZDsKK2V4dGVybiB1bnNpZ25lZCBjaGFyIGdfZGNfZGlfYXNzaWdubWVudFtdOworCit2b2lkIGlwdV9kbWZjX2luaXQoaW50IGRtZmNfdHlwZSwgaW50IGZpcnN0KQoreworCXUzMiBkbWZjX3dyX2NoYW4sIGRtZmNfZHBfY2hhbjsKKworCWlmIChmaXJzdCkgeworCQlpZiAoZG1mY190eXBlX3NldHVwID4gZG1mY190eXBlKQorCQkJZG1mY190eXBlID0gZG1mY190eXBlX3NldHVwOworCQllbHNlCisJCQlkbWZjX3R5cGVfc2V0dXAgPSBkbWZjX3R5cGU7CisKKwkJLyogZGlzYWJsZSBETUZDLUlDIGNoYW5uZWwqLworCQlfX3Jhd193cml0ZWwoMHgyLCBETUZDX0lDX0NUUkwpOworCX0gZWxzZSBpZiAoZG1mY190eXBlX3NldHVwID49IERNRkNfSElHSF9SRVNPTFVUSU9OX0RDKSB7CisJCXByaW50ZigiRE1GQyBoaWdoIHJlc29sdXRpb24gaGFzIHNldCwgd2lsbCBub3QgY2hhbmdlXG4iKTsKKwkJcmV0dXJuOworCX0gZWxzZQorCQlkbWZjX3R5cGVfc2V0dXAgPSBkbWZjX3R5cGU7CisKKwlpZiAoZG1mY190eXBlID09IERNRkNfSElHSF9SRVNPTFVUSU9OX0RDKSB7CisJCS8qIDEgLSBzZWdtZW50IDB+MzsKKwkJICogNUIgLSBzZWdlbWVudCA0LCA1OworCQkgKiA1RiAtIHNlZ2VtZW50IDYsIDc7CisJCSAqIDFDLCAyQyBhbmQgNkIsIDZGIHVudXNlZDsKKwkJICovCisJCWRlYnVnKCJJUFUgRE1GQyBEQyBISUdIIFJFUzogMSgwfjMpLCA1Qig0LDUpLCA1Rig2LDcpXG4iKTsKKwkJZG1mY193cl9jaGFuID0gMHgwMDAwMDA4ODsKKwkJZG1mY19kcF9jaGFuID0gMHgwMDAwOTY5NDsKKwkJZG1mY19zaXplXzI4ID0gMjU2ICogNDsKKwkJZG1mY19zaXplXzI5ID0gMDsKKwkJZG1mY19zaXplXzI0ID0gMDsKKwkJZG1mY19zaXplXzI3ID0gMTI4ICogNDsKKwkJZG1mY19zaXplXzIzID0gMTI4ICogNDsKKwl9IGVsc2UgaWYgKGRtZmNfdHlwZSA9PSBETUZDX0hJR0hfUkVTT0xVVElPTl9EUCkgeworCQkvKiAxIC0gc2VnbWVudCAwLCAxOworCQkgKiA1QiAtIHNlZ2VtZW50IDJ+NTsKKwkJICogNUYgLSBzZWdlbWVudCA2LDc7CisJCSAqIDFDLCAyQyBhbmQgNkIsIDZGIHVudXNlZDsKKwkJICovCisJCWRlYnVnKCJJUFUgRE1GQyBEUCBISUdIIFJFUzogMSgwLDEpLCA1QigyfjUpLCA1Rig2LDcpXG4iKTsKKwkJZG1mY193cl9jaGFuID0gMHgwMDAwMDA5MDsKKwkJZG1mY19kcF9jaGFuID0gMHgwMDAwOTY4YTsKKwkJZG1mY19zaXplXzI4ID0gMTI4ICogNDsKKwkJZG1mY19zaXplXzI5ID0gMDsKKwkJZG1mY19zaXplXzI0ID0gMDsKKwkJZG1mY19zaXplXzI3ID0gMTI4ICogNDsKKwkJZG1mY19zaXplXzIzID0gMjU2ICogNDsKKwl9IGVsc2UgaWYgKGRtZmNfdHlwZSA9PSBETUZDX0hJR0hfUkVTT0xVVElPTl9PTkxZX0RQKSB7CisJCS8qIDVCIC0gc2VnZW1lbnQgMH4zOworCQkgKiA1RiAtIHNlZ2VtZW50IDR+NzsKKwkJICogMSwgMUMsIDJDIGFuZCA2QiwgNkYgdW51c2VkOworCQkgKi8KKwkJZGVidWcoIklQVSBETUZDIE9OTFktRFAgSElHSCBSRVM6IDVCKDB+MyksIDVGKDR+NylcbiIpOworCQlkbWZjX3dyX2NoYW4gPSAweDAwMDAwMDAwOworCQlkbWZjX2RwX2NoYW4gPSAweDAwMDA4Yzg4OworCQlkbWZjX3NpemVfMjggPSAwOworCQlkbWZjX3NpemVfMjkgPSAwOworCQlkbWZjX3NpemVfMjQgPSAwOworCQlkbWZjX3NpemVfMjcgPSAyNTYgKiA0OworCQlkbWZjX3NpemVfMjMgPSAyNTYgKiA0OworCX0gZWxzZSB7CisJCS8qIDEgLSBzZWdtZW50IDAsIDE7CisJCSAqIDVCIC0gc2VnZW1lbnQgNCwgNTsKKwkJICogNUYgLSBzZWdlbWVudCA2LCA3OworCQkgKiAxQywgMkMgYW5kIDZCLCA2RiB1bnVzZWQ7CisJCSAqLworCQlkZWJ1ZygiSVBVIERNRkMgTk9STUFMIG1vZGU6IDEoMH4xKSwgNUIoNCw1KSwgNUYoNiw3KVxuIik7CisJCWRtZmNfd3JfY2hhbiA9IDB4MDAwMDAwOTA7CisJCWRtZmNfZHBfY2hhbiA9IDB4MDAwMDk2OTQ7CisJCWRtZmNfc2l6ZV8yOCA9IDEyOCAqIDQ7CisJCWRtZmNfc2l6ZV8yOSA9IDA7CisJCWRtZmNfc2l6ZV8yNCA9IDA7CisJCWRtZmNfc2l6ZV8yNyA9IDEyOCAqIDQ7CisJCWRtZmNfc2l6ZV8yMyA9IDEyOCAqIDQ7CisJfQorCV9fcmF3X3dyaXRlbChkbWZjX3dyX2NoYW4sIERNRkNfV1JfQ0hBTik7CisJX19yYXdfd3JpdGVsKDB4MjAyMDIwRjYsIERNRkNfV1JfQ0hBTl9ERUYpOworCV9fcmF3X3dyaXRlbChkbWZjX2RwX2NoYW4sIERNRkNfRFBfQ0hBTik7CisJLyogRW5hYmxlIGNoYW4gNSB3YXRlcm1hcmsgc2V0IGF0IDUgYnVyc3RzIGFuZCBjbGVhciBhdCA3IGJ1cnN0cyAqLworCV9fcmF3X3dyaXRlbCgweDIwMjBGNkY2LCBETUZDX0RQX0NIQU5fREVGKTsKK30KKwordm9pZCBpcHVfZG1mY19zZXRfd2FpdDRlb3QoaW50IGRtYV9jaGFuLCBpbnQgd2lkdGgpCit7CisJdTMyIGRtZmNfZ2VuMSA9IF9fcmF3X3JlYWRsKERNRkNfR0VORVJBTDEpOworCisJaWYgKHdpZHRoID49IEhJR0hfUkVTT0xVVElPTl9XSURUSCkgeworCQlpZiAoZG1hX2NoYW4gPT0gMjMpCisJCQlpcHVfZG1mY19pbml0KERNRkNfSElHSF9SRVNPTFVUSU9OX0RQLCAwKTsKKwkJZWxzZSBpZiAoZG1hX2NoYW4gPT0gMjgpCisJCQlpcHVfZG1mY19pbml0KERNRkNfSElHSF9SRVNPTFVUSU9OX0RDLCAwKTsKKwl9CisKKwlpZiAoZG1hX2NoYW4gPT0gMjMpIHsgLyo1QiovCisJCWlmIChkbWZjX3NpemVfMjMgLyB3aWR0aCA+IDMpCisJCQlkbWZjX2dlbjEgfD0gMVVMIDw8IDIwOworCQllbHNlCisJCQlkbWZjX2dlbjEgJj0gfigxVUwgPDwgMjApOworCX0gZWxzZSBpZiAoZG1hX2NoYW4gPT0gMjQpIHsgLyo2QiovCisJCWlmIChkbWZjX3NpemVfMjQgLyB3aWR0aCA+IDEpCisJCQlkbWZjX2dlbjEgfD0gMVVMIDw8IDIyOworCQllbHNlCisJCQlkbWZjX2dlbjEgJj0gfigxVUwgPDwgMjIpOworCX0gZWxzZSBpZiAoZG1hX2NoYW4gPT0gMjcpIHsgLyo1RiovCisJCWlmIChkbWZjX3NpemVfMjcgLyB3aWR0aCA+IDIpCisJCQlkbWZjX2dlbjEgfD0gMVVMIDw8IDIxOworCQllbHNlCisJCQlkbWZjX2dlbjEgJj0gfigxVUwgPDwgMjEpOworCX0gZWxzZSBpZiAoZG1hX2NoYW4gPT0gMjgpIHsgLyoxKi8KKwkJaWYgKGRtZmNfc2l6ZV8yOCAvIHdpZHRoID4gMikKKwkJCWRtZmNfZ2VuMSB8PSAxVUwgPDwgMTY7CisJCWVsc2UKKwkJCWRtZmNfZ2VuMSAmPSB+KDFVTCA8PCAxNik7CisJfSBlbHNlIGlmIChkbWFfY2hhbiA9PSAyOSkgeyAvKjZGKi8KKwkJaWYgKGRtZmNfc2l6ZV8yOSAvIHdpZHRoID4gMSkKKwkJCWRtZmNfZ2VuMSB8PSAxVUwgPDwgMjM7CisJCWVsc2UKKwkJCWRtZmNfZ2VuMSAmPSB+KDFVTCA8PCAyMyk7CisJfQorCisJX19yYXdfd3JpdGVsKGRtZmNfZ2VuMSwgRE1GQ19HRU5FUkFMMSk7Cit9CisKK3N0YXRpYyB2b2lkIGlwdV9kaV9kYXRhX3dhdmVfY29uZmlnKGludCBkaSwKKwkJCQkgICAgIGludCB3YXZlX2dlbiwKKwkJCQkgICAgIGludCBhY2Nlc3Nfc2l6ZSwgaW50IGNvbXBvbmVudF9zaXplKQoreworCXUzMiByZWc7CisJcmVnID0gKGFjY2Vzc19zaXplIDw8IERJX0RXX0dFTl9BQ0NFU1NfU0laRV9PRkZTRVQpIHwKKwkgICAgKGNvbXBvbmVudF9zaXplIDw8IERJX0RXX0dFTl9DT01QT05FTlRfU0laRV9PRkZTRVQpOworCV9fcmF3X3dyaXRlbChyZWcsIERJX0RXX0dFTihkaSwgd2F2ZV9nZW4pKTsKK30KKworc3RhdGljIHZvaWQgaXB1X2RpX2RhdGFfcGluX2NvbmZpZyhpbnQgZGksIGludCB3YXZlX2dlbiwgaW50IGRpX3BpbiwgaW50IHNldCwKKwkJCQkgICAgaW50IHVwLCBpbnQgZG93bikKK3sKKwl1MzIgcmVnOworCisJcmVnID0gX19yYXdfcmVhZGwoRElfRFdfR0VOKGRpLCB3YXZlX2dlbikpOworCXJlZyAmPSB+KDB4MyA8PCAoZGlfcGluICogMikpOworCXJlZyB8PSBzZXQgPDwgKGRpX3BpbiAqIDIpOworCV9fcmF3X3dyaXRlbChyZWcsIERJX0RXX0dFTihkaSwgd2F2ZV9nZW4pKTsKKworCV9fcmF3X3dyaXRlbCgoZG93biA8PCAxNikgfCB1cCwgRElfRFdfU0VUKGRpLCB3YXZlX2dlbiwgc2V0KSk7Cit9CisKK3N0YXRpYyB2b2lkIGlwdV9kaV9zeW5jX2NvbmZpZyhpbnQgZGksIGludCB3YXZlX2dlbiwKKwkJCQlpbnQgcnVuX2NvdW50LCBpbnQgcnVuX3NyYywKKwkJCQlpbnQgb2Zmc2V0X2NvdW50LCBpbnQgb2Zmc2V0X3NyYywKKwkJCQlpbnQgcmVwZWF0X2NvdW50LCBpbnQgY250X2Nscl9zcmMsCisJCQkJaW50IGNudF9wb2xhcml0eV9nZW5fZW4sCisJCQkJaW50IGNudF9wb2xhcml0eV9jbHJfc3JjLAorCQkJCWludCBjbnRfcG9sYXJpdHlfdHJpZ2dlcl9zcmMsCisJCQkJaW50IGNudF91cCwgaW50IGNudF9kb3duKQoreworCXUzMiByZWc7CisKKwlpZiAoKHJ1bl9jb3VudCA+PSAweDEwMDApIHx8IChvZmZzZXRfY291bnQgPj0gMHgxMDAwKSB8fAorCQkocmVwZWF0X2NvdW50ID49IDB4MTAwMCkgfHwKKwkJKGNudF91cCA+PSAweDQwMCkgfHwgKGNudF9kb3duID49IDB4NDAwKSkgeworCQlwcmludGYoIkRJJWQgY291bnRlcnMgb3V0IG9mIHJhbmdlLlxuIiwgZGkpOworCQlyZXR1cm47CisJfQorCisJcmVnID0gKHJ1bl9jb3VudCA8PCAxOSkgfCAoKytydW5fc3JjIDw8IDE2KSB8CisJICAgIChvZmZzZXRfY291bnQgPDwgMykgfCArK29mZnNldF9zcmM7CisJX19yYXdfd3JpdGVsKHJlZywgRElfU1dfR0VOMChkaSwgd2F2ZV9nZW4pKTsKKwlyZWcgPSAoY250X3BvbGFyaXR5X2dlbl9lbiA8PCAyOSkgfCAoKytjbnRfY2xyX3NyYyA8PCAyNSkgfAorCSAgICAoKytjbnRfcG9sYXJpdHlfdHJpZ2dlcl9zcmMgPDwgMTIpIHwgKCsrY250X3BvbGFyaXR5X2Nscl9zcmMgPDwgOSk7CisJcmVnIHw9IChjbnRfZG93biA8PCAxNikgfCBjbnRfdXA7CisJaWYgKHJlcGVhdF9jb3VudCA9PSAwKSB7CisJCS8qIEVuYWJsZSBhdXRvIHJlbG9hZCAqLworCQlyZWcgfD0gMHgxMDAwMDAwMDsKKwl9CisJX19yYXdfd3JpdGVsKHJlZywgRElfU1dfR0VOMShkaSwgd2F2ZV9nZW4pKTsKKwlyZWcgPSBfX3Jhd19yZWFkbChESV9TVFBfUkVQKGRpLCB3YXZlX2dlbikpOworCXJlZyAmPSB+KDB4RkZGRiA8PCAoMTYgKiAoKHdhdmVfZ2VuIC0gMSkgJiAweDEpKSk7CisJcmVnIHw9IHJlcGVhdF9jb3VudCA8PCAoMTYgKiAoKHdhdmVfZ2VuIC0gMSkgJiAweDEpKTsKKwlfX3Jhd193cml0ZWwocmVnLCBESV9TVFBfUkVQKGRpLCB3YXZlX2dlbikpOworfQorCitzdGF0aWMgdm9pZCBpcHVfZGNfbWFwX2NvbmZpZyhpbnQgbWFwLCBpbnQgYnl0ZV9udW0sIGludCBvZmZzZXQsIGludCBtYXNrKQoreworCWludCBwdHIgPSBtYXAgKiAzICsgYnl0ZV9udW07CisJdTMyIHJlZzsKKworCXJlZyA9IF9fcmF3X3JlYWRsKERDX01BUF9DT05GX1ZBTChwdHIpKTsKKwlyZWcgJj0gfigweEZGRkYgPDwgKDE2ICogKHB0ciAmIDB4MSkpKTsKKwlyZWcgfD0gKChvZmZzZXQgPDwgOCkgfCBtYXNrKSA8PCAoMTYgKiAocHRyICYgMHgxKSk7CisJX19yYXdfd3JpdGVsKHJlZywgRENfTUFQX0NPTkZfVkFMKHB0cikpOworCisJcmVnID0gX19yYXdfcmVhZGwoRENfTUFQX0NPTkZfUFRSKG1hcCkpOworCXJlZyAmPSB+KDB4MUYgPDwgKCgxNiAqIChtYXAgJiAweDEpKSArICg1ICogYnl0ZV9udW0pKSk7CisJcmVnIHw9IHB0ciA8PCAoKDE2ICogKG1hcCAmIDB4MSkpICsgKDUgKiBieXRlX251bSkpOworCV9fcmF3X3dyaXRlbChyZWcsIERDX01BUF9DT05GX1BUUihtYXApKTsKK30KKworc3RhdGljIHZvaWQgaXB1X2RjX21hcF9jbGVhcihpbnQgbWFwKQoreworCXUzMiByZWcgPSBfX3Jhd19yZWFkbChEQ19NQVBfQ09ORl9QVFIobWFwKSk7CisJX19yYXdfd3JpdGVsKHJlZyAmIH4oMHhGRkZGIDw8ICgxNiAqIChtYXAgJiAweDEpKSksCisJCSAgICAgRENfTUFQX0NPTkZfUFRSKG1hcCkpOworfQorCitzdGF0aWMgdm9pZCBpcHVfZGNfd3JpdGVfdG1wbChpbnQgd29yZCwgdTMyIG9wY29kZSwgdTMyIG9wZXJhbmQsIGludCBtYXAsCisJCQkgICAgICAgaW50IHdhdmUsIGludCBnbHVlLCBpbnQgc3luYykKK3sKKwl1MzIgcmVnOworCWludCBzdG9wID0gMTsKKworCXJlZyA9IHN5bmM7CisJcmVnIHw9IChnbHVlIDw8IDQpOworCXJlZyB8PSAoKyt3YXZlIDw8IDExKTsKKwlyZWcgfD0gKCsrbWFwIDw8IDE1KTsKKwlyZWcgfD0gKG9wZXJhbmQgPDwgMjApICYgMHhGRkYwMDAwMDsKKwlfX3Jhd193cml0ZWwocmVnLCBpcHVfZGNfdG1wbF9yZWcgKyB3b3JkICogMik7CisKKwlyZWcgPSAob3BlcmFuZCA+PiAxMik7CisJcmVnIHw9IG9wY29kZSA8PCA0OworCXJlZyB8PSAoc3RvcCA8PCA5KTsKKwlfX3Jhd193cml0ZWwocmVnLCBpcHVfZGNfdG1wbF9yZWcgKyB3b3JkICogMiArIDEpOworfQorCitzdGF0aWMgdm9pZCBpcHVfZGNfbGlua19ldmVudChpbnQgY2hhbiwgaW50IGV2ZW50LCBpbnQgYWRkciwgaW50IHByaW9yaXR5KQoreworCXUzMiByZWc7CisKKwlyZWcgPSBfX3Jhd19yZWFkbChEQ19STF9DSChjaGFuLCBldmVudCkpOworCXJlZyAmPSB+KDB4RkZGRiA8PCAoMTYgKiAoZXZlbnQgJiAweDEpKSk7CisJcmVnIHw9ICgoYWRkciA8PCA4KSB8IHByaW9yaXR5KSA8PCAoMTYgKiAoZXZlbnQgJiAweDEpKTsKKwlfX3Jhd193cml0ZWwocmVnLCBEQ19STF9DSChjaGFuLCBldmVudCkpOworfQorCisvKiBZID0gUiAqICAxLjIwMCArIEcgKiAgMi4zNDMgKyBCICogIC40NTMgKyAwLjI1MDsKKyAqIFUgPSBSICogLS42NzIgKyBHICogLTEuMzI4ICsgQiAqICAyLjAwMCArIDUxMi4yNTAuOworICogViA9IFIgKiAgMi4wMDAgKyBHICogLTEuNjcyICsgQiAqIC0uMzI4ICsgNTEyLjI1MC47CisgKi8KK3N0YXRpYyBjb25zdCBpbnQgcmdiMnljYmNyX2NvZWZmWzVdWzNdID0geworCXsweDRELCAweDk2LCAweDFEfSwKKwl7MHgzRDUsIDB4M0FCLCAweDgwfSwKKwl7MHg4MCwgMHgzOTUsIDB4M0VCfSwKKwl7MHgwMDAwLCAweDAyMDAsIDB4MDIwMH0sCS8qIEIwLCBCMSwgQjIgKi8KKwl7MHgyLCAweDIsIDB4Mn0sCS8qIFMwLCBTMSwgUzIgKi8KK307CisKKy8qIFIgPSAoMS4xNjQgKiAoWSAtIDE2KSkgKyAoMS41OTYgKiAoQ3IgLSAxMjgpKTsKKyAqIEcgPSAoMS4xNjQgKiAoWSAtIDE2KSkgLSAoMC4zOTIgKiAoQ2IgLSAxMjgpKSAtICgwLjgxMyAqIChDciAtIDEyOCkpOworICogQiA9ICgxLjE2NCAqIChZIC0gMTYpKSArICgyLjAxNyAqIChDYiAtIDEyOCk7CisgKi8KK3N0YXRpYyBjb25zdCBpbnQgeWNiY3IycmdiX2NvZWZmWzVdWzNdID0geworCXsweDA5NSwgMHgwMDAsIDB4MENDfSwKKwl7MHgwOTUsIDB4M0NFLCAweDM5OH0sCisJezB4MDk1LCAweDBGRiwgMHgwMDB9LAorCXsweDNFNDIsIDB4MDEwQSwgMHgzREQ2fSwJLypCMCxCMSxCMiAqLworCXsweDEsIDB4MSwgMHgxfSwJLypTMCxTMSxTMiAqLworfTsKKworI2RlZmluZSBtYXNrX2EoYSkgKCh1MzIpKGEpICYgMHgzRkYpCisjZGVmaW5lIG1hc2tfYihiKSAoKHUzMikoYikgJiAweDNGRkYpCisKKy8qIFBscyBrZWVwIFMwLCBTMSBhbmQgUzIgYXMgMHgyIGJ5IHVzaW5nIHRoaXMgY29udmVydGlvbiAqLworc3RhdGljIGludCByZ2JfdG9feXV2KGludCBuLCBpbnQgcmVkLCBpbnQgZ3JlZW4sIGludCBibHVlKQoreworCWludCBjOworCWMgPSByZWQgKiByZ2IyeWNiY3JfY29lZmZbbl1bMF07CisJYyArPSBncmVlbiAqIHJnYjJ5Y2Jjcl9jb2VmZltuXVsxXTsKKwljICs9IGJsdWUgKiByZ2IyeWNiY3JfY29lZmZbbl1bMl07CisJYyAvPSAxNjsKKwljICs9IHJnYjJ5Y2Jjcl9jb2VmZlszXVtuXSAqIDQ7CisJYyArPSA4OworCWMgLz0gMTY7CisJaWYgKGMgPCAwKQorCQljID0gMDsKKwlpZiAoYyA+IDI1NSkKKwkJYyA9IDI1NTsKKwlyZXR1cm4gYzsKK30KKworLyoKKyAqIFJvdyBpcyBmb3IgQkc6CVJHQjJZVVYgWVVWMlJHQiBSR0IyUkdCIFlVVjJZVVYgQ1NDX05PTkUKKyAqIENvbHVtbiBpcyBmb3IgRkc6CVJHQjJZVVYgWVVWMlJHQiBSR0IyUkdCIFlVVjJZVVYgQ1NDX05PTkUKKyAqLworc3RhdGljIHN0cnVjdCBkcF9jc2NfcGFyYW1fdCBkcF9jc2NfYXJyYXlbQ1NDX05VTV1bQ1NDX05VTV0gPSB7CisJeworCQl7RFBfQ09NX0NPTkZfQ1NDX0RFRl9CT1RILCAmcmdiMnljYmNyX2NvZWZmfSwKKwkJezAsIDB9LAorCQl7MCwgMH0sCisJCXtEUF9DT01fQ09ORl9DU0NfREVGX0JHLCAmcmdiMnljYmNyX2NvZWZmfSwKKwkJe0RQX0NPTV9DT05GX0NTQ19ERUZfQkcsICZyZ2IyeWNiY3JfY29lZmZ9CisJfSwKKwl7CisJCXswLCAwfSwKKwkJe0RQX0NPTV9DT05GX0NTQ19ERUZfQk9USCwgJnljYmNyMnJnYl9jb2VmZn0sCisJCXtEUF9DT01fQ09ORl9DU0NfREVGX0JHLCAmeWNiY3IycmdiX2NvZWZmfSwKKwkJezAsIDB9LAorCQl7RFBfQ09NX0NPTkZfQ1NDX0RFRl9CRywgJnljYmNyMnJnYl9jb2VmZn0KKwl9LAorCXsKKwkJezAsIDB9LAorCQl7RFBfQ09NX0NPTkZfQ1NDX0RFRl9GRywgJnljYmNyMnJnYl9jb2VmZn0sCisJCXswLCAwfSwKKwkJezAsIDB9LAorCQl7MCwgMH0KKwl9LAorCXsKKwkJe0RQX0NPTV9DT05GX0NTQ19ERUZfRkcsICZyZ2IyeWNiY3JfY29lZmZ9LAorCQl7MCwgMH0sCisJCXswLCAwfSwKKwkJezAsIDB9LAorCQl7MCwgMH0KKwl9LAorCXsKKwkJe0RQX0NPTV9DT05GX0NTQ19ERUZfRkcsICZyZ2IyeWNiY3JfY29lZmZ9LAorCQl7RFBfQ09NX0NPTkZfQ1NDX0RFRl9GRywgJnljYmNyMnJnYl9jb2VmZn0sCisJCXswLCAwfSwKKwkJezAsIDB9LAorCQl7MCwgMH0KKwl9Cit9OworCitzdGF0aWMgZW51bSBjc2NfdHlwZV90IGZnX2NzY190eXBlID0gQ1NDX05PTkUsIGJnX2NzY190eXBlID0gQ1NDX05PTkU7CitzdGF0aWMgaW50IGNvbG9yX2tleV80cmdiID0gMTsKKwordm9pZCBpcHVfZHBfY3NjX3NldHVwKGludCBkcCwgc3RydWN0IGRwX2NzY19wYXJhbV90IGRwX2NzY19wYXJhbSwKKwkJCXVuc2lnbmVkIGNoYXIgc3JtX21vZGVfdXBkYXRlKQoreworCXUzMiByZWc7CisJY29uc3QgaW50ICgqY29lZmYpWzVdWzNdOworCisJaWYgKGRwX2NzY19wYXJhbS5tb2RlID49IDApIHsKKwkJcmVnID0gX19yYXdfcmVhZGwoRFBfQ09NX0NPTkYoZHApKTsKKwkJcmVnICY9IH5EUF9DT01fQ09ORl9DU0NfREVGX01BU0s7CisJCXJlZyB8PSBkcF9jc2NfcGFyYW0ubW9kZTsKKwkJX19yYXdfd3JpdGVsKHJlZywgRFBfQ09NX0NPTkYoZHApKTsKKwl9CisKKwljb2VmZiA9IGRwX2NzY19wYXJhbS5jb2VmZjsKKworCWlmIChjb2VmZikgeworCQlfX3Jhd193cml0ZWwobWFza19hKCgqY29lZmYpWzBdWzBdKSB8CisJCQkJKG1hc2tfYSgoKmNvZWZmKVswXVsxXSkgPDwgMTYpLCBEUF9DU0NfQV8wKGRwKSk7CisJCV9fcmF3X3dyaXRlbChtYXNrX2EoKCpjb2VmZilbMF1bMl0pIHwKKwkJCQkobWFza19hKCgqY29lZmYpWzFdWzBdKSA8PCAxNiksIERQX0NTQ19BXzEoZHApKTsKKwkJX19yYXdfd3JpdGVsKG1hc2tfYSgoKmNvZWZmKVsxXVsxXSkgfAorCQkJCShtYXNrX2EoKCpjb2VmZilbMV1bMl0pIDw8IDE2KSwgRFBfQ1NDX0FfMihkcCkpOworCQlfX3Jhd193cml0ZWwobWFza19hKCgqY29lZmYpWzJdWzBdKSB8CisJCQkJKG1hc2tfYSgoKmNvZWZmKVsyXVsxXSkgPDwgMTYpLCBEUF9DU0NfQV8zKGRwKSk7CisJCV9fcmF3X3dyaXRlbChtYXNrX2EoKCpjb2VmZilbMl1bMl0pIHwKKwkJCQkobWFza19iKCgqY29lZmYpWzNdWzBdKSA8PCAxNikgfAorCQkJCSgoKmNvZWZmKVs0XVswXSA8PCAzMCksIERQX0NTQ18wKGRwKSk7CisJCV9fcmF3X3dyaXRlbChtYXNrX2IoKCpjb2VmZilbM11bMV0pIHwgKCgqY29lZmYpWzRdWzFdIDw8IDE0KSB8CisJCQkJKG1hc2tfYigoKmNvZWZmKVszXVsyXSkgPDwgMTYpIHwKKwkJCQkoKCpjb2VmZilbNF1bMl0gPDwgMzApLCBEUF9DU0NfMShkcCkpOworCX0KKworCWlmIChzcm1fbW9kZV91cGRhdGUpIHsKKwkJcmVnID0gX19yYXdfcmVhZGwoSVBVX1NSTV9QUkkyKSB8IDB4ODsKKwkJX19yYXdfd3JpdGVsKHJlZywgSVBVX1NSTV9QUkkyKTsKKwl9Cit9CisKK2ludCBpcHVfZHBfaW5pdChpcHVfY2hhbm5lbF90IGNoYW5uZWwsIHVpbnQzMl90IGluX3BpeGVsX2ZtdCwKKwkJIHVpbnQzMl90IG91dF9waXhlbF9mbXQpCit7CisJaW50IGluX2ZtdCwgb3V0X2ZtdDsKKwlpbnQgZHA7CisJaW50IHBhcnRpYWwgPSAwOworCXVpbnQzMl90IHJlZzsKKworCWlmIChjaGFubmVsID09IE1FTV9GR19TWU5DKSB7CisJCWRwID0gRFBfU1lOQzsKKwkJcGFydGlhbCA9IDE7CisJfSBlbHNlIGlmIChjaGFubmVsID09IE1FTV9CR19TWU5DKSB7CisJCWRwID0gRFBfU1lOQzsKKwkJcGFydGlhbCA9IDA7CisJfSBlbHNlIGlmIChjaGFubmVsID09IE1FTV9CR19BU1lOQzApIHsKKwkJZHAgPSBEUF9BU1lOQzA7CisJCXBhcnRpYWwgPSAwOworCX0gZWxzZSB7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWluX2ZtdCA9IGZvcm1hdF90b19jb2xvcnNwYWNlKGluX3BpeGVsX2ZtdCk7CisJb3V0X2ZtdCA9IGZvcm1hdF90b19jb2xvcnNwYWNlKG91dF9waXhlbF9mbXQpOworCisJaWYgKHBhcnRpYWwpIHsKKwkJaWYgKGluX2ZtdCA9PSBSR0IpIHsKKwkJCWlmIChvdXRfZm10ID09IFJHQikKKwkJCQlmZ19jc2NfdHlwZSA9IFJHQjJSR0I7CisJCQllbHNlCisJCQkJZmdfY3NjX3R5cGUgPSBSR0IyWVVWOworCQl9IGVsc2UgeworCQkJaWYgKG91dF9mbXQgPT0gUkdCKQorCQkJCWZnX2NzY190eXBlID0gWVVWMlJHQjsKKwkJCWVsc2UKKwkJCQlmZ19jc2NfdHlwZSA9IFlVVjJZVVY7CisJCX0KKwl9IGVsc2UgeworCQlpZiAoaW5fZm10ID09IFJHQikgeworCQkJaWYgKG91dF9mbXQgPT0gUkdCKQorCQkJCWJnX2NzY190eXBlID0gUkdCMlJHQjsKKwkJCWVsc2UKKwkJCQliZ19jc2NfdHlwZSA9IFJHQjJZVVY7CisJCX0gZWxzZSB7CisJCQlpZiAob3V0X2ZtdCA9PSBSR0IpCisJCQkJYmdfY3NjX3R5cGUgPSBZVVYyUkdCOworCQkJZWxzZQorCQkJCWJnX2NzY190eXBlID0gWVVWMllVVjsKKwkJfQorCX0KKworCS8qIFRyYW5zZm9ybSBjb2xvciBrZXkgZnJvbSByZ2IgdG8geXV2IGlmIENTQyBpcyBlbmFibGVkICovCisJcmVnID0gX19yYXdfcmVhZGwoRFBfQ09NX0NPTkYoZHApKTsKKwlpZiAoY29sb3Jfa2V5XzRyZ2IgJiYgKHJlZyAmIERQX0NPTV9DT05GX0dXQ0tFKSAmJgorCQkoKChmZ19jc2NfdHlwZSA9PSBSR0IyWVVWKSAmJiAoYmdfY3NjX3R5cGUgPT0gWVVWMllVVikpIHx8CisJCSgoZmdfY3NjX3R5cGUgPT0gWVVWMllVVikgJiYgKGJnX2NzY190eXBlID09IFJHQjJZVVYpKSB8fAorCQkoKGZnX2NzY190eXBlID09IFlVVjJZVVYpICYmIChiZ19jc2NfdHlwZSA9PSBZVVYyWVVWKSkgfHwKKwkJKChmZ19jc2NfdHlwZSA9PSBZVVYyUkdCKSAmJiAoYmdfY3NjX3R5cGUgPT0gWVVWMlJHQikpKSkgeworCQlpbnQgcmVkLCBncmVlbiwgYmx1ZTsKKwkJaW50IHksIHUsIHY7CisJCXVpbnQzMl90IGNvbG9yX2tleSA9IF9fcmF3X3JlYWRsKERQX0dSQVBIX1dJTkRfQ1RSTChkcCkpICYKKwkJCTB4RkZGRkZGTDsKKworCQlkZWJ1ZygiX2lwdV9kcF9pbml0IGNvbG9yIGtleSAweCV4IG5lZWQgY2hhbmdlIHRvIHl1diBmbXQhXG4iLAorCQkJY29sb3Jfa2V5KTsKKworCQlyZWQgPSAoY29sb3Jfa2V5ID4+IDE2KSAmIDB4RkY7CisJCWdyZWVuID0gKGNvbG9yX2tleSA+PiA4KSAmIDB4RkY7CisJCWJsdWUgPSBjb2xvcl9rZXkgJiAweEZGOworCisJCXkgPSByZ2JfdG9feXV2KDAsIHJlZCwgZ3JlZW4sIGJsdWUpOworCQl1ID0gcmdiX3RvX3l1digxLCByZWQsIGdyZWVuLCBibHVlKTsKKwkJdiA9IHJnYl90b195dXYoMiwgcmVkLCBncmVlbiwgYmx1ZSk7CisJCWNvbG9yX2tleSA9ICh5IDw8IDE2KSB8ICh1IDw8IDgpIHwgdjsKKworCQlyZWcgPSBfX3Jhd19yZWFkbChEUF9HUkFQSF9XSU5EX0NUUkwoZHApKSAmIDB4RkYwMDAwMDBMOworCQlfX3Jhd193cml0ZWwocmVnIHwgY29sb3Jfa2V5LCBEUF9HUkFQSF9XSU5EX0NUUkwoZHApKTsKKwkJY29sb3Jfa2V5XzRyZ2IgPSAwOworCisJCWRlYnVnKCJfaXB1X2RwX2luaXQgY29sb3Iga2V5IGNoYW5nZSB0byB5dXYgZm10IDB4JXghXG4iLAorCQkJY29sb3Jfa2V5KTsKKwl9CisKKwlpcHVfZHBfY3NjX3NldHVwKGRwLCBkcF9jc2NfYXJyYXlbYmdfY3NjX3R5cGVdW2ZnX2NzY190eXBlXSwgMSk7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBpcHVfZHBfdW5pbml0KGlwdV9jaGFubmVsX3QgY2hhbm5lbCkKK3sKKwlpbnQgZHA7CisJaW50IHBhcnRpYWwgPSAwOworCisJaWYgKGNoYW5uZWwgPT0gTUVNX0ZHX1NZTkMpIHsKKwkJZHAgPSBEUF9TWU5DOworCQlwYXJ0aWFsID0gMTsKKwl9IGVsc2UgaWYgKGNoYW5uZWwgPT0gTUVNX0JHX1NZTkMpIHsKKwkJZHAgPSBEUF9TWU5DOworCQlwYXJ0aWFsID0gMDsKKwl9IGVsc2UgaWYgKGNoYW5uZWwgPT0gTUVNX0JHX0FTWU5DMCkgeworCQlkcCA9IERQX0FTWU5DMDsKKwkJcGFydGlhbCA9IDA7CisJfSBlbHNlIHsKKwkJcmV0dXJuOworCX0KKworCWlmIChwYXJ0aWFsKQorCQlmZ19jc2NfdHlwZSA9IENTQ19OT05FOworCWVsc2UKKwkJYmdfY3NjX3R5cGUgPSBDU0NfTk9ORTsKKworCWlwdV9kcF9jc2Nfc2V0dXAoZHAsIGRwX2NzY19hcnJheVtiZ19jc2NfdHlwZV1bZmdfY3NjX3R5cGVdLCAwKTsKK30KKwordm9pZCBpcHVfZGNfaW5pdChpbnQgZGNfY2hhbiwgaW50IGRpLCB1bnNpZ25lZCBjaGFyIGludGVybGFjZWQpCit7CisJdTMyIHJlZyA9IDA7CisKKwlpZiAoKGRjX2NoYW4gPT0gMSkgfHwgKGRjX2NoYW4gPT0gNSkpIHsKKwkJaWYgKGludGVybGFjZWQpIHsKKwkJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9OTCwgMCwgMyk7CisJCQlpcHVfZGNfbGlua19ldmVudChkY19jaGFuLCBEQ19FVlRfRU9MLCAwLCAyKTsKKwkJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9ORVdfREFUQSwgMCwgMSk7CisJCX0gZWxzZSB7CisJCQlpZiAoZGkpIHsKKwkJCQlpcHVfZGNfbGlua19ldmVudChkY19jaGFuLCBEQ19FVlRfTkwsIDIsIDMpOworCQkJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9FT0wsIDMsIDIpOworCQkJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9ORVdfREFUQSwKKwkJCQkJNCwgMSk7CisJCQl9IGVsc2UgeworCQkJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9OTCwgNSwgMyk7CisJCQkJaXB1X2RjX2xpbmtfZXZlbnQoZGNfY2hhbiwgRENfRVZUX0VPTCwgNiwgMik7CisJCQkJaXB1X2RjX2xpbmtfZXZlbnQoZGNfY2hhbiwgRENfRVZUX05FV19EQVRBLAorCQkJCQk3LCAxKTsKKwkJCX0KKwkJfQorCQlpcHVfZGNfbGlua19ldmVudChkY19jaGFuLCBEQ19FVlRfTkYsIDAsIDApOworCQlpcHVfZGNfbGlua19ldmVudChkY19jaGFuLCBEQ19FVlRfTkZJRUxELCAwLCAwKTsKKwkJaXB1X2RjX2xpbmtfZXZlbnQoZGNfY2hhbiwgRENfRVZUX0VPRiwgMCwgMCk7CisJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9FT0ZJRUxELCAwLCAwKTsKKwkJaXB1X2RjX2xpbmtfZXZlbnQoZGNfY2hhbiwgRENfRVZUX05FV19DSEFOLCAwLCAwKTsKKwkJaXB1X2RjX2xpbmtfZXZlbnQoZGNfY2hhbiwgRENfRVZUX05FV19BRERSLCAwLCAwKTsKKworCQlyZWcgPSAweDI7CisJCXJlZyB8PSBEQ19ESVNQX0lEX1NZTkMoZGkpIDw8IERDX1dSX0NIX0NPTkZfUFJPR19ESVNQX0lEX09GRlNFVDsKKwkJcmVnIHw9IGRpIDw8IDI7CisJCWlmIChpbnRlcmxhY2VkKQorCQkJcmVnIHw9IERDX1dSX0NIX0NPTkZfRklFTERfTU9ERTsKKwl9IGVsc2UgaWYgKChkY19jaGFuID09IDgpIHx8IChkY19jaGFuID09IDkpKSB7CisJCS8qIGFzeW5jIGNoYW5uZWxzICovCisJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9ORVdfREFUQV9XXzAsIDB4NjQsIDEpOworCQlpcHVfZGNfbGlua19ldmVudChkY19jaGFuLCBEQ19FVlRfTkVXX0RBVEFfV18xLCAweDY0LCAxKTsKKworCQlyZWcgPSAweDM7CisJCXJlZyB8PSBEQ19ESVNQX0lEX1NFUklBTCA8PCBEQ19XUl9DSF9DT05GX1BST0dfRElTUF9JRF9PRkZTRVQ7CisJfQorCV9fcmF3X3dyaXRlbChyZWcsIERDX1dSX0NIX0NPTkYoZGNfY2hhbikpOworCisJX19yYXdfd3JpdGVsKDB4MDAwMDAwMDAsIERDX1dSX0NIX0FERFIoZGNfY2hhbikpOworCisJX19yYXdfd3JpdGVsKDB4MDAwMDAwODQsIERDX0dFTik7Cit9CisKK3ZvaWQgaXB1X2RjX3VuaW5pdChpbnQgZGNfY2hhbikKK3sKKwlpZiAoKGRjX2NoYW4gPT0gMSkgfHwgKGRjX2NoYW4gPT0gNSkpIHsKKwkJaXB1X2RjX2xpbmtfZXZlbnQoZGNfY2hhbiwgRENfRVZUX05MLCAwLCAwKTsKKwkJaXB1X2RjX2xpbmtfZXZlbnQoZGNfY2hhbiwgRENfRVZUX0VPTCwgMCwgMCk7CisJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9ORVdfREFUQSwgMCwgMCk7CisJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9ORiwgMCwgMCk7CisJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9ORklFTEQsIDAsIDApOworCQlpcHVfZGNfbGlua19ldmVudChkY19jaGFuLCBEQ19FVlRfRU9GLCAwLCAwKTsKKwkJaXB1X2RjX2xpbmtfZXZlbnQoZGNfY2hhbiwgRENfRVZUX0VPRklFTEQsIDAsIDApOworCQlpcHVfZGNfbGlua19ldmVudChkY19jaGFuLCBEQ19FVlRfTkVXX0NIQU4sIDAsIDApOworCQlpcHVfZGNfbGlua19ldmVudChkY19jaGFuLCBEQ19FVlRfTkVXX0FERFIsIDAsIDApOworCX0gZWxzZSBpZiAoKGRjX2NoYW4gPT0gOCkgfHwgKGRjX2NoYW4gPT0gOSkpIHsKKwkJaXB1X2RjX2xpbmtfZXZlbnQoZGNfY2hhbiwgRENfRVZUX05FV19BRERSX1dfMCwgMCwgMCk7CisJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9ORVdfQUREUl9XXzEsIDAsIDApOworCQlpcHVfZGNfbGlua19ldmVudChkY19jaGFuLCBEQ19FVlRfTkVXX0NIQU5fV18wLCAwLCAwKTsKKwkJaXB1X2RjX2xpbmtfZXZlbnQoZGNfY2hhbiwgRENfRVZUX05FV19DSEFOX1dfMSwgMCwgMCk7CisJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9ORVdfREFUQV9XXzAsIDAsIDApOworCQlpcHVfZGNfbGlua19ldmVudChkY19jaGFuLCBEQ19FVlRfTkVXX0RBVEFfV18xLCAwLCAwKTsKKwkJaXB1X2RjX2xpbmtfZXZlbnQoZGNfY2hhbiwgRENfRVZUX05FV19BRERSX1JfMCwgMCwgMCk7CisJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9ORVdfQUREUl9SXzEsIDAsIDApOworCQlpcHVfZGNfbGlua19ldmVudChkY19jaGFuLCBEQ19FVlRfTkVXX0NIQU5fUl8wLCAwLCAwKTsKKwkJaXB1X2RjX2xpbmtfZXZlbnQoZGNfY2hhbiwgRENfRVZUX05FV19DSEFOX1JfMSwgMCwgMCk7CisJCWlwdV9kY19saW5rX2V2ZW50KGRjX2NoYW4sIERDX0VWVF9ORVdfREFUQV9SXzAsIDAsIDApOworCQlpcHVfZGNfbGlua19ldmVudChkY19jaGFuLCBEQ19FVlRfTkVXX0RBVEFfUl8xLCAwLCAwKTsKKwl9Cit9CisKK2ludCBpcHVfY2hhbl9pc19pbnRlcmxhY2VkKGlwdV9jaGFubmVsX3QgY2hhbm5lbCkKK3sKKwlpZiAoY2hhbm5lbCA9PSBNRU1fRENfU1lOQykKKwkJcmV0dXJuICEhKF9fcmF3X3JlYWRsKERDX1dSX0NIX0NPTkZfMSkgJgorCQkJICBEQ19XUl9DSF9DT05GX0ZJRUxEX01PREUpOworCWVsc2UgaWYgKChjaGFubmVsID09IE1FTV9CR19TWU5DKSB8fCAoY2hhbm5lbCA9PSBNRU1fRkdfU1lOQykpCisJCXJldHVybiAhIShfX3Jhd19yZWFkbChEQ19XUl9DSF9DT05GXzUpICYKKwkJCSAgRENfV1JfQ0hfQ09ORl9GSUVMRF9NT0RFKTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBpcHVfZHBfZGNfZW5hYmxlKGlwdV9jaGFubmVsX3QgY2hhbm5lbCkKK3sKKwlpbnQgZGk7CisJdWludDMyX3QgcmVnOworCXVpbnQzMl90IGRjX2NoYW47CisKKwlpZiAoY2hhbm5lbCA9PSBNRU1fRkdfU1lOQykKKwkJZGNfY2hhbiA9IDU7CisJaWYgKGNoYW5uZWwgPT0gTUVNX0RDX1NZTkMpCisJCWRjX2NoYW4gPSAxOworCWVsc2UgaWYgKGNoYW5uZWwgPT0gTUVNX0JHX1NZTkMpCisJCWRjX2NoYW4gPSA1OworCWVsc2UKKwkJcmV0dXJuOworCisJaWYgKGNoYW5uZWwgPT0gTUVNX0ZHX1NZTkMpIHsKKwkJLyogRW5hYmxlIEZHIGNoYW5uZWwgKi8KKwkJcmVnID0gX19yYXdfcmVhZGwoRFBfQ09NX0NPTkYoRFBfU1lOQykpOworCQlfX3Jhd193cml0ZWwocmVnIHwgRFBfQ09NX0NPTkZfRkdfRU4sIERQX0NPTV9DT05GKERQX1NZTkMpKTsKKworCQlyZWcgPSBfX3Jhd19yZWFkbChJUFVfU1JNX1BSSTIpIHwgMHg4OworCQlfX3Jhd193cml0ZWwocmVnLCBJUFVfU1JNX1BSSTIpOworCQlyZXR1cm47CisJfQorCisJZGkgPSBnX2RjX2RpX2Fzc2lnbm1lbnRbZGNfY2hhbl07CisKKwkvKiBNYWtlIHN1cmUgb3RoZXIgREMgc3luYyBjaGFubmVsIGlzIG5vdCBhc3NpZ25lZCBzYW1lIERJICovCisJcmVnID0gX19yYXdfcmVhZGwoRENfV1JfQ0hfQ09ORig2IC0gZGNfY2hhbikpOworCWlmICgoZGkgPDwgMikgPT0gKHJlZyAmIERDX1dSX0NIX0NPTkZfUFJPR19ESV9JRCkpIHsKKwkJcmVnICY9IH5EQ19XUl9DSF9DT05GX1BST0dfRElfSUQ7CisJCXJlZyB8PSBkaSA/IDAgOiBEQ19XUl9DSF9DT05GX1BST0dfRElfSUQ7CisJCV9fcmF3X3dyaXRlbChyZWcsIERDX1dSX0NIX0NPTkYoNiAtIGRjX2NoYW4pKTsKKwl9CisKKwlyZWcgPSBfX3Jhd19yZWFkbChEQ19XUl9DSF9DT05GKGRjX2NoYW4pKTsKKwlyZWcgfD0gNCA8PCBEQ19XUl9DSF9DT05GX1BST0dfVFlQRV9PRkZTRVQ7CisJX19yYXdfd3JpdGVsKHJlZywgRENfV1JfQ0hfQ09ORihkY19jaGFuKSk7CisKKwljbGtfZW5hYmxlKGdfcGl4ZWxfY2xrW2RpXSk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGRjX3N3YXA7CisKK3ZvaWQgaXB1X2RwX2RjX2Rpc2FibGUoaXB1X2NoYW5uZWxfdCBjaGFubmVsLCB1bnNpZ25lZCBjaGFyIHN3YXApCit7CisJdWludDMyX3QgcmVnOworCXVpbnQzMl90IGNzYzsKKwl1aW50MzJfdCBkY19jaGFuID0gMDsKKwlpbnQgdGltZW91dCA9IDUwOworCisJZGNfc3dhcCA9IHN3YXA7CisKKwlpZiAoY2hhbm5lbCA9PSBNRU1fRENfU1lOQykgeworCQlkY19jaGFuID0gMTsKKwl9IGVsc2UgaWYgKGNoYW5uZWwgPT0gTUVNX0JHX1NZTkMpIHsKKwkJZGNfY2hhbiA9IDU7CisJfSBlbHNlIGlmIChjaGFubmVsID09IE1FTV9GR19TWU5DKSB7CisJCS8qIERpc2FibGUgRkcgY2hhbm5lbCAqLworCQlkY19jaGFuID0gNTsKKworCQlyZWcgPSBfX3Jhd19yZWFkbChEUF9DT01fQ09ORihEUF9TWU5DKSk7CisJCWNzYyA9IHJlZyAmIERQX0NPTV9DT05GX0NTQ19ERUZfTUFTSzsKKwkJaWYgKGNzYyA9PSBEUF9DT01fQ09ORl9DU0NfREVGX0ZHKQorCQkJcmVnICY9IH5EUF9DT01fQ09ORl9DU0NfREVGX01BU0s7CisKKwkJcmVnICY9IH5EUF9DT01fQ09ORl9GR19FTjsKKwkJX19yYXdfd3JpdGVsKHJlZywgRFBfQ09NX0NPTkYoRFBfU1lOQykpOworCisJCXJlZyA9IF9fcmF3X3JlYWRsKElQVV9TUk1fUFJJMikgfCAweDg7CisJCV9fcmF3X3dyaXRlbChyZWcsIElQVV9TUk1fUFJJMik7CisKKwkJdGltZW91dCA9IDUwOworCisJCS8qCisJCSAqIFdhaXQgZm9yIERDIHRyaXBsZSBidWZmZXIgdG8gZW1wdHksCisJCSAqIHRoaXMgY2hlY2sgaXMgdXNlZnVsIGZvciB0diBvdmVybGF5LgorCQkgKi8KKwkJaWYgKGdfZGNfZGlfYXNzaWdubWVudFtkY19jaGFuXSA9PSAwKQorCQkJd2hpbGUgKChfX3Jhd19yZWFkbChEQ19TVEFUKSAmIDB4MDAwMDAwMDIpCisJCQkgICAgICAgIT0gMHgwMDAwMDAwMikgeworCQkJCXVkZWxheSgyMDAwKTsKKwkJCQl0aW1lb3V0IC09IDI7CisJCQkJaWYgKHRpbWVvdXQgPD0gMCkKKwkJCQkJYnJlYWs7CisJCQl9CisJCWVsc2UgaWYgKGdfZGNfZGlfYXNzaWdubWVudFtkY19jaGFuXSA9PSAxKQorCQkJd2hpbGUgKChfX3Jhd19yZWFkbChEQ19TVEFUKSAmIDB4MDAwMDAwMjApCisJCQkgICAgICAgIT0gMHgwMDAwMDAyMCkgeworCQkJCXVkZWxheSgyMDAwKTsKKwkJCQl0aW1lb3V0IC09IDI7CisJCQkJaWYgKHRpbWVvdXQgPD0gMCkKKwkJCQkJYnJlYWs7CisJCQl9CisJCXJldHVybjsKKwl9IGVsc2UgeworCQlyZXR1cm47CisJfQorCisJaWYgKGRjX3N3YXApIHsKKwkJLyogU3dhcCBEQyBjaGFubmVsIDEgYW5kIDUgc2V0dGluZ3MsIGFuZCBkaXNhYmxlIG9sZCBkYyBjaGFuICovCisJCXJlZyA9IF9fcmF3X3JlYWRsKERDX1dSX0NIX0NPTkYoZGNfY2hhbikpOworCQlfX3Jhd193cml0ZWwocmVnLCBEQ19XUl9DSF9DT05GKDYgLSBkY19jaGFuKSk7CisJCXJlZyAmPSB+RENfV1JfQ0hfQ09ORl9QUk9HX1RZUEVfTUFTSzsKKwkJcmVnIF49IERDX1dSX0NIX0NPTkZfUFJPR19ESV9JRDsKKwkJX19yYXdfd3JpdGVsKHJlZywgRENfV1JfQ0hfQ09ORihkY19jaGFuKSk7CisJfSBlbHNlIHsKKwkJdGltZW91dCA9IDUwOworCisJCS8qIFdhaXQgZm9yIERDIHRyaXBsZSBidWZmZXIgdG8gZW1wdHkgKi8KKwkJaWYgKGdfZGNfZGlfYXNzaWdubWVudFtkY19jaGFuXSA9PSAwKQorCQkJd2hpbGUgKChfX3Jhd19yZWFkbChEQ19TVEFUKSAmIDB4MDAwMDAwMDIpCisJCQkJIT0gMHgwMDAwMDAwMikgeworCQkJCXVkZWxheSgyMDAwKTsKKwkJCQl0aW1lb3V0IC09IDI7CisJCQkJaWYgKHRpbWVvdXQgPD0gMCkKKwkJCQkJYnJlYWs7CisJCQl9CisJCWVsc2UgaWYgKGdfZGNfZGlfYXNzaWdubWVudFtkY19jaGFuXSA9PSAxKQorCQkJd2hpbGUgKChfX3Jhd19yZWFkbChEQ19TVEFUKSAmIDB4MDAwMDAwMjApCisJCQkJIT0gMHgwMDAwMDAyMCkgeworCQkJCXVkZWxheSgyMDAwKTsKKwkJCQl0aW1lb3V0IC09IDI7CisJCQkJaWYgKHRpbWVvdXQgPD0gMCkKKwkJCQkJYnJlYWs7CisJCQl9CisKKwkJcmVnID0gX19yYXdfcmVhZGwoRENfV1JfQ0hfQ09ORihkY19jaGFuKSk7CisJCXJlZyAmPSB+RENfV1JfQ0hfQ09ORl9QUk9HX1RZUEVfTUFTSzsKKwkJX19yYXdfd3JpdGVsKHJlZywgRENfV1JfQ0hfQ09ORihkY19jaGFuKSk7CisKKwkJcmVnID0gX19yYXdfcmVhZGwoSVBVX0RJU1BfR0VOKTsKKwkJaWYgKGdfZGNfZGlfYXNzaWdubWVudFtkY19jaGFuXSkKKwkJCXJlZyAmPSB+REkxX0NPVU5URVJfUkVMRUFTRTsKKwkJZWxzZQorCQkJcmVnICY9IH5ESTBfQ09VTlRFUl9SRUxFQVNFOworCQlfX3Jhd193cml0ZWwocmVnLCBJUFVfRElTUF9HRU4pOworCisJCS8qIENsb2NrIGlzIGFscmVhZHkgb2ZmIGJlY2F1c2UgaXQgbXVzdCBiZSBkb25lIHF1aWNrbHksIGJ1dAorCQkgICB3ZSBuZWVkIHRvIGZpeCB0aGUgcmVmIGNvdW50ICovCisJCWNsa19kaXNhYmxlKGdfcGl4ZWxfY2xrW2dfZGNfZGlfYXNzaWdubWVudFtkY19jaGFuXV0pOworCX0KK30KKwordm9pZCBpcHVfaW5pdF9kY19tYXBwaW5ncyh2b2lkKQoreworCS8qIElQVV9QSVhfRk1UX1JHQjI0ICovCisJaXB1X2RjX21hcF9jbGVhcigwKTsKKwlpcHVfZGNfbWFwX2NvbmZpZygwLCAwLCA3LCAweEZGKTsKKwlpcHVfZGNfbWFwX2NvbmZpZygwLCAxLCAxNSwgMHhGRik7CisJaXB1X2RjX21hcF9jb25maWcoMCwgMiwgMjMsIDB4RkYpOworCisJLyogSVBVX1BJWF9GTVRfUkdCNjY2ICovCisJaXB1X2RjX21hcF9jbGVhcigxKTsKKwlpcHVfZGNfbWFwX2NvbmZpZygxLCAwLCA1LCAweEZDKTsKKwlpcHVfZGNfbWFwX2NvbmZpZygxLCAxLCAxMSwgMHhGQyk7CisJaXB1X2RjX21hcF9jb25maWcoMSwgMiwgMTcsIDB4RkMpOworCisJLyogSVBVX1BJWF9GTVRfWVVWNDQ0ICovCisJaXB1X2RjX21hcF9jbGVhcigyKTsKKwlpcHVfZGNfbWFwX2NvbmZpZygyLCAwLCAxNSwgMHhGRik7CisJaXB1X2RjX21hcF9jb25maWcoMiwgMSwgMjMsIDB4RkYpOworCWlwdV9kY19tYXBfY29uZmlnKDIsIDIsIDcsIDB4RkYpOworCisJLyogSVBVX1BJWF9GTVRfUkdCNTY1ICovCisJaXB1X2RjX21hcF9jbGVhcigzKTsKKwlpcHVfZGNfbWFwX2NvbmZpZygzLCAwLCA0LCAweEY4KTsKKwlpcHVfZGNfbWFwX2NvbmZpZygzLCAxLCAxMCwgMHhGQyk7CisJaXB1X2RjX21hcF9jb25maWcoMywgMiwgMTUsIDB4RjgpOworCisJLyogSVBVX1BJWF9GTVRfTFZEUzY2NiAqLworCWlwdV9kY19tYXBfY2xlYXIoNCk7CisJaXB1X2RjX21hcF9jb25maWcoNCwgMCwgNSwgMHhGQyk7CisJaXB1X2RjX21hcF9jb25maWcoNCwgMSwgMTMsIDB4RkMpOworCWlwdV9kY19tYXBfY29uZmlnKDQsIDIsIDIxLCAweEZDKTsKK30KKworaW50IGlwdV9waXhmbXRfdG9fbWFwKHVpbnQzMl90IGZtdCkKK3sKKwlzd2l0Y2ggKGZtdCkgeworCWNhc2UgSVBVX1BJWF9GTVRfR0VORVJJQzoKKwljYXNlIElQVV9QSVhfRk1UX1JHQjI0OgorCQlyZXR1cm4gMDsKKwljYXNlIElQVV9QSVhfRk1UX1JHQjY2NjoKKwkJcmV0dXJuIDE7CisJY2FzZSBJUFVfUElYX0ZNVF9ZVVY0NDQ6CisJCXJldHVybiAyOworCWNhc2UgSVBVX1BJWF9GTVRfUkdCNTY1OgorCQlyZXR1cm4gMzsKKwljYXNlIElQVV9QSVhfRk1UX0xWRFM2NjY6CisJCXJldHVybiA0OworCX0KKworCXJldHVybiAtMTsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGFkYXB0IHN5bmNocm9ub3VzIExDRCBwYW5lbCB0byBJUFUgcmVzdHJpY3Rpb24uCisgKi8KK3ZvaWQgYWRhcHRfcGFuZWxfdG9faXB1X3Jlc3RyaWNpdGlvbnModWludDMyX3QgKnBpeGVsX2NsaywKKwkJCQkgICAgICB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LAorCQkJCSAgICAgIHVpbnQxNl90IGhfc3RhcnRfd2lkdGgsCisJCQkJICAgICAgdWludDE2X3QgaF9lbmRfd2lkdGgsCisJCQkJICAgICAgdWludDE2X3Qgdl9zdGFydF93aWR0aCwKKwkJCQkgICAgICB1aW50MTZfdCAqdl9lbmRfd2lkdGgpCit7CisJaWYgKCp2X2VuZF93aWR0aCA8IDIpIHsKKwkJdWludDE2X3QgdG90YWxfd2lkdGggPSB3aWR0aCArIGhfc3RhcnRfd2lkdGggKyBoX2VuZF93aWR0aDsKKwkJdWludDE2X3QgdG90YWxfaGVpZ2h0X29sZCA9IGhlaWdodCArIHZfc3RhcnRfd2lkdGggKworCQkJKCp2X2VuZF93aWR0aCk7CisJCXVpbnQxNl90IHRvdGFsX2hlaWdodF9uZXcgPSBoZWlnaHQgKyB2X3N0YXJ0X3dpZHRoICsgMjsKKwkJKnZfZW5kX3dpZHRoID0gMjsKKwkJKnBpeGVsX2NsayA9ICgqcGl4ZWxfY2xrKSAqIHRvdGFsX3dpZHRoICogdG90YWxfaGVpZ2h0X25ldyAvCisJCQkodG90YWxfd2lkdGggKiB0b3RhbF9oZWlnaHRfb2xkKTsKKwkJcHJpbnRmKCJXQVJOSU5HOiBhZGFwdCBwYW5lbCBlbmQgYmxhbmsgbGluZXNcbiIpOworCX0KK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGluaXRpYWxpemUgYSBzeW5jaHJvbm91cyBMQ0QgcGFuZWwuCisgKgorICogQHBhcmFtICAgICAgIGRpc3AgICAgICAgICAgICBUaGUgREkgdGhlIHBhbmVsIGlzIGF0dGFjaGVkIHRvLgorICoKKyAqIEBwYXJhbSAgICAgICBwaXhlbF9jbGsgICAgICAgRGVzaXJlZCBwaXhlbCBjbG9jayBmcmVxdWVuY3kgaW4gSHouCisgKgorICogQHBhcmFtICAgICAgIHBpeGVsX2ZtdCAgICAgICBJbnB1dCBwYXJhbWV0ZXIgZm9yIHBpeGVsIGZvcm1hdCBvZiBidWZmZXIuCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpeGVsIGZvcm1hdCBpcyBhIEZPVVJDQyBBU0NJSSBjb2RlLgorICoKKyAqIEBwYXJhbSAgICAgICB3aWR0aCAgICAgICAgICAgVGhlIHdpZHRoIG9mIHBhbmVsIGluIHBpeGVscy4KKyAqCisgKiBAcGFyYW0gICAgICAgaGVpZ2h0ICAgICAgICAgIFRoZSBoZWlnaHQgb2YgcGFuZWwgaW4gcGl4ZWxzLgorICoKKyAqIEBwYXJhbSAgICAgICBoU3RhcnRXaWR0aCAgICAgVGhlIG51bWJlciBvZiBwaXhlbCBjbG9ja3MgYmV0d2VlbiB0aGUgSFNZTkMKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsIHB1bHNlIGFuZCB0aGUgc3RhcnQgb2YgdmFsaWQgZGF0YS4KKyAqCisgKiBAcGFyYW0gICAgICAgaFN5bmNXaWR0aCAgICAgIFRoZSB3aWR0aCBvZiB0aGUgSFNZTkMgc2lnbmFsIGluIHVuaXRzIG9mIHBpeGVsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2Nrcy4KKyAqCisgKiBAcGFyYW0gICAgICAgaEVuZFdpZHRoICAgICAgIFRoZSBudW1iZXIgb2YgcGl4ZWwgY2xvY2tzIGJldHdlZW4gdGhlIGVuZCBvZgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCBkYXRhIGFuZCB0aGUgSFNZTkMgc2lnbmFsIGZvciBuZXh0IGxpbmUuCisgKgorICogQHBhcmFtICAgICAgIHZTdGFydFdpZHRoICAgICBUaGUgbnVtYmVyIG9mIGxpbmVzIGJldHdlZW4gdGhlIFZTWU5DCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbCBwdWxzZSBhbmQgdGhlIHN0YXJ0IG9mIHZhbGlkIGRhdGEuCisgKgorICogQHBhcmFtICAgICAgIHZTeW5jV2lkdGggICAgICBUaGUgd2lkdGggb2YgdGhlIFZTWU5DIHNpZ25hbCBpbiB1bml0cyBvZiBsaW5lcworICoKKyAqIEBwYXJhbSAgICAgICB2RW5kV2lkdGggICAgICAgVGhlIG51bWJlciBvZiBsaW5lcyBiZXR3ZWVuIHRoZSBlbmQgb2YgdmFsaWQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBhbmQgdGhlIFZTWU5DIHNpZ25hbCBmb3IgbmV4dCBmcmFtZS4KKyAqCisgKiBAcGFyYW0gICAgICAgc2lnICAgICAgICAgICAgIEJpdGZpZWxkIG9mIHNpZ25hbCBwb2xhcml0aWVzIGZvciBMQ0QgaW50ZXJmYWNlLgorICoKKyAqIEByZXR1cm4gICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMCBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24KKyAqICAgICAgICAgICAgICBmYWlsLgorICovCisKK2ludDMyX3QgaXB1X2luaXRfc3luY19wYW5lbChpbnQgZGlzcCwgdWludDMyX3QgcGl4ZWxfY2xrLAorCQkJICAgIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsCisJCQkgICAgdWludDMyX3QgcGl4ZWxfZm10LAorCQkJICAgIHVpbnQxNl90IGhfc3RhcnRfd2lkdGgsIHVpbnQxNl90IGhfc3luY193aWR0aCwKKwkJCSAgICB1aW50MTZfdCBoX2VuZF93aWR0aCwgdWludDE2X3Qgdl9zdGFydF93aWR0aCwKKwkJCSAgICB1aW50MTZfdCB2X3N5bmNfd2lkdGgsIHVpbnQxNl90IHZfZW5kX3dpZHRoLAorCQkJICAgIHVpbnQzMl90IHZfdG9faF9zeW5jLCBpcHVfZGlfc2lnbmFsX2NmZ190IHNpZykKK3sKKwl1aW50MzJfdCByZWc7CisJdWludDMyX3QgZGlfZ2VuLCB2c3luY19jbnQ7CisJdWludDMyX3QgZGl2LCByb3VuZGVkX3BpeGVsX2NsazsKKwl1aW50MzJfdCBoX3RvdGFsLCB2X3RvdGFsOworCWludCBtYXA7CisJc3RydWN0IGNsayAqZGlfcGFyZW50OworCisJZGVidWcoInBhbmVsIHNpemUgPSAlZCB4ICVkXG4iLCB3aWR0aCwgaGVpZ2h0KTsKKworCWlmICgodl9zeW5jX3dpZHRoID09IDApIHx8IChoX3N5bmNfd2lkdGggPT0gMCkpCisJCXJldHVybiBFSU5WQUw7CisKKwlhZGFwdF9wYW5lbF90b19pcHVfcmVzdHJpY2l0aW9ucygmcGl4ZWxfY2xrLCB3aWR0aCwgaGVpZ2h0LAorCQkJCQkgaF9zdGFydF93aWR0aCwgaF9lbmRfd2lkdGgsCisJCQkJCSB2X3N0YXJ0X3dpZHRoLCAmdl9lbmRfd2lkdGgpOworCWhfdG90YWwgPSB3aWR0aCArIGhfc3luY193aWR0aCArIGhfc3RhcnRfd2lkdGggKyBoX2VuZF93aWR0aDsKKwl2X3RvdGFsID0gaGVpZ2h0ICsgdl9zeW5jX3dpZHRoICsgdl9zdGFydF93aWR0aCArIHZfZW5kX3dpZHRoOworCisJLyogSW5pdCBjbG9ja2luZyAqLworCWRlYnVnKCJwaXhlbCBjbGsgPSAlZFxuIiwgcGl4ZWxfY2xrKTsKKworCWlmIChzaWcuZXh0X2NsaykgeworCQlpZiAoIShnX2RpMV90dm91dCAmJiAoZGlzcCA9PSAxKSkpIHsgLypub3Qgcm91bmQgZGl2IGZvciB0dm91dCovCisJCQkvKgorCQkJICogU2V0IHRoZSAgUExMIHRvIGJlIGFuIGV2ZW4gbXVsdGlwbGUKKwkJCSAqIG9mIHRoZSBwaXhlbCBjbG9jay4KKwkJCSAqLworCQkJaWYgKChjbGtfZ2V0X3VzZWNvdW50KGdfcGl4ZWxfY2xrWzBdKSA9PSAwKSAmJgorCQkJCShjbGtfZ2V0X3VzZWNvdW50KGdfcGl4ZWxfY2xrWzFdKSA9PSAwKSkgeworCQkJCWRpX3BhcmVudCA9IGNsa19nZXRfcGFyZW50KGdfZGlfY2xrW2Rpc3BdKTsKKwkJCQlyb3VuZGVkX3BpeGVsX2NsayA9CisJCQkJCWNsa19yb3VuZF9yYXRlKGdfcGl4ZWxfY2xrW2Rpc3BdLAorCQkJCQkJcGl4ZWxfY2xrKTsKKwkJCQlkaXYgID0gY2xrX2dldF9yYXRlKGRpX3BhcmVudCkgLworCQkJCQlyb3VuZGVkX3BpeGVsX2NsazsKKwkJCQlpZiAoZGl2ICUgMikKKwkJCQkJZGl2Kys7CisJCQkJaWYgKGNsa19nZXRfcmF0ZShkaV9wYXJlbnQpICE9IGRpdiAqCisJCQkJCXJvdW5kZWRfcGl4ZWxfY2xrKQorCQkJCQljbGtfc2V0X3JhdGUoZGlfcGFyZW50LAorCQkJCQkJZGl2ICogcm91bmRlZF9waXhlbF9jbGspOworCQkJCXVkZWxheSgxMDAwMCk7CisJCQkJY2xrX3NldF9yYXRlKGdfZGlfY2xrW2Rpc3BdLAorCQkJCQkyICogcm91bmRlZF9waXhlbF9jbGspOworCQkJCXVkZWxheSgxMDAwMCk7CisJCQl9CisJCX0KKwkJY2xrX3NldF9wYXJlbnQoZ19waXhlbF9jbGtbZGlzcF0sIGdfZGlfY2xrW2Rpc3BdKTsKKwl9IGVsc2UgeworCQlpZiAoY2xrX2dldF91c2Vjb3VudChnX3BpeGVsX2Nsa1tkaXNwXSkgIT0gMCkKKwkJCWNsa19zZXRfcGFyZW50KGdfcGl4ZWxfY2xrW2Rpc3BdLCBnX2lwdV9jbGspOworCX0KKwlyb3VuZGVkX3BpeGVsX2NsayA9IGNsa19yb3VuZF9yYXRlKGdfcGl4ZWxfY2xrW2Rpc3BdLCBwaXhlbF9jbGspOworCWNsa19zZXRfcmF0ZShnX3BpeGVsX2Nsa1tkaXNwXSwgcm91bmRlZF9waXhlbF9jbGspOworCXVkZWxheSg1MDAwKTsKKwkvKiBHZXQgaW50ZWdlciBwb3J0aW9uIG9mIGRpdmlkZXIgKi8KKwlkaXYgPSBjbGtfZ2V0X3JhdGUoY2xrX2dldF9wYXJlbnQoZ19waXhlbF9jbGtbZGlzcF0pKSAvCisJCXJvdW5kZWRfcGl4ZWxfY2xrOworCisJaXB1X2RpX2RhdGFfd2F2ZV9jb25maWcoZGlzcCwgU1lOQ19XQVZFLCBkaXYgLSAxLCBkaXYgLSAxKTsKKwlpcHVfZGlfZGF0YV9waW5fY29uZmlnKGRpc3AsIFNZTkNfV0FWRSwgRElfUElOMTUsIDMsIDAsIGRpdiAqIDIpOworCisJbWFwID0gaXB1X3BpeGZtdF90b19tYXAocGl4ZWxfZm10KTsKKwlpZiAobWFwIDwgMCkgeworCQlkZWJ1ZygiSVBVX0RJU1A6IE5vIE1BUFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWRpX2dlbiA9IF9fcmF3X3JlYWRsKERJX0dFTkVSQUwoZGlzcCkpOworCisJaWYgKHNpZy5pbnRlcmxhY2VkKSB7CisJCS8qIFNldHVwIGludGVybmFsIEhTWU5DIHdhdmVmb3JtICovCisJCWlwdV9kaV9zeW5jX2NvbmZpZygKKwkJCQlkaXNwLAkJLyogZGlzcGxheSAqLworCQkJCTEsCQkvKiBjb3VudGVyICovCisJCQkJaF90b3RhbCAvIDIgLSAxLC8qIHJ1biBjb3VudCAqLworCQkJCURJX1NZTkNfQ0xLLAkvKiBydW5fcmVzb2x1dGlvbiAqLworCQkJCTAsCQkvKiBvZmZzZXQgKi8KKwkJCQlESV9TWU5DX05PTkUsCS8qIG9mZnNldCByZXNvbHV0aW9uICovCisJCQkJMCwJCS8qIHJlcGVhdCBjb3VudCAqLworCQkJCURJX1NZTkNfTk9ORSwJLyogQ05UX0NMUl9TRUwgKi8KKwkJCQkwLAkJLyogQ05UX1BPTEFSSVRZX0dFTl9FTiAqLworCQkJCURJX1NZTkNfTk9ORSwJLyogQ05UX1BPTEFSSVRZX0NMUl9TRUwgKi8KKwkJCQlESV9TWU5DX05PTkUsCS8qIENOVF9QT0xBUklUWV9UUklHR0VSX1NFTCAqLworCQkJCTAsCQkvKiBDT1VOVCBVUCAqLworCQkJCTAJCS8qIENPVU5UIERPV04gKi8KKwkJCQkpOworCisJCS8qIEZpZWxkIDEgVlNZTkMgd2F2ZWZvcm0gKi8KKwkJaXB1X2RpX3N5bmNfY29uZmlnKAorCQkJCWRpc3AsCQkvKiBkaXNwbGF5ICovCisJCQkJMiwJCS8qIGNvdW50ZXIgKi8KKwkJCQloX3RvdGFsIC0gMSwJLyogcnVuIGNvdW50ICovCisJCQkJRElfU1lOQ19DTEssCS8qIHJ1bl9yZXNvbHV0aW9uICovCisJCQkJMCwJCS8qIG9mZnNldCAqLworCQkJCURJX1NZTkNfTk9ORSwJLyogb2Zmc2V0IHJlc29sdXRpb24gKi8KKwkJCQkwLAkJLyogcmVwZWF0IGNvdW50ICovCisJCQkJRElfU1lOQ19OT05FLAkvKiBDTlRfQ0xSX1NFTCAqLworCQkJCTAsCQkvKiBDTlRfUE9MQVJJVFlfR0VOX0VOICovCisJCQkJRElfU1lOQ19OT05FLAkvKiBDTlRfUE9MQVJJVFlfQ0xSX1NFTCAqLworCQkJCURJX1NZTkNfTk9ORSwJLyogQ05UX1BPTEFSSVRZX1RSSUdHRVJfU0VMICovCisJCQkJMCwJCS8qIENPVU5UIFVQICovCisJCQkJNAkJLyogQ09VTlQgRE9XTiAqLworCQkJCSk7CisKKwkJLyogU2V0dXAgaW50ZXJuYWwgSFNZTkMgd2F2ZWZvcm0gKi8KKwkJaXB1X2RpX3N5bmNfY29uZmlnKAorCQkJCWRpc3AsCQkvKiBkaXNwbGF5ICovCisJCQkJMywJCS8qIGNvdW50ZXIgKi8KKwkJCQl2X3RvdGFsICogMiAtIDEsLyogcnVuIGNvdW50ICovCisJCQkJRElfU1lOQ19JTlRfSFNZTkMsCS8qIHJ1bl9yZXNvbHV0aW9uICovCisJCQkJMSwJCS8qIG9mZnNldCAqLworCQkJCURJX1NZTkNfSU5UX0hTWU5DLAkvKiBvZmZzZXQgcmVzb2x1dGlvbiAqLworCQkJCTAsCQkvKiByZXBlYXQgY291bnQgKi8KKwkJCQlESV9TWU5DX05PTkUsCS8qIENOVF9DTFJfU0VMICovCisJCQkJMCwJCS8qIENOVF9QT0xBUklUWV9HRU5fRU4gKi8KKwkJCQlESV9TWU5DX05PTkUsCS8qIENOVF9QT0xBUklUWV9DTFJfU0VMICovCisJCQkJRElfU1lOQ19OT05FLAkvKiBDTlRfUE9MQVJJVFlfVFJJR0dFUl9TRUwgKi8KKwkJCQkwLAkJLyogQ09VTlQgVVAgKi8KKwkJCQk0CQkvKiBDT1VOVCBET1dOICovCisJCQkJKTsKKworCQkvKiBBY3RpdmUgRmllbGQgPyAqLworCQlpcHVfZGlfc3luY19jb25maWcoCisJCQkJZGlzcCwJCS8qIGRpc3BsYXkgKi8KKwkJCQk0LAkJLyogY291bnRlciAqLworCQkJCXZfdG90YWwgLyAyIC0gMSwvKiBydW4gY291bnQgKi8KKwkJCQlESV9TWU5DX0hTWU5DLAkvKiBydW5fcmVzb2x1dGlvbiAqLworCQkJCXZfc3RhcnRfd2lkdGgsCS8qICBvZmZzZXQgKi8KKwkJCQlESV9TWU5DX0hTWU5DLAkvKiBvZmZzZXQgcmVzb2x1dGlvbiAqLworCQkJCTIsCQkvKiByZXBlYXQgY291bnQgKi8KKwkJCQlESV9TWU5DX1ZTWU5DLAkvKiBDTlRfQ0xSX1NFTCAqLworCQkJCTAsCQkvKiBDTlRfUE9MQVJJVFlfR0VOX0VOICovCisJCQkJRElfU1lOQ19OT05FLAkvKiBDTlRfUE9MQVJJVFlfQ0xSX1NFTCAqLworCQkJCURJX1NZTkNfTk9ORSwJLyogQ05UX1BPTEFSSVRZX1RSSUdHRVJfU0VMICovCisJCQkJMCwJCS8qIENPVU5UIFVQICovCisJCQkJMAkJLyogQ09VTlQgRE9XTiAqLworCQkJCSk7CisKKwkJLyogQWN0aXZlIExpbmUgKi8KKwkJaXB1X2RpX3N5bmNfY29uZmlnKAorCQkJCWRpc3AsCQkvKiBkaXNwbGF5ICovCisJCQkJNSwJCS8qIGNvdW50ZXIgKi8KKwkJCQkwLAkJLyogcnVuIGNvdW50ICovCisJCQkJRElfU1lOQ19IU1lOQywJLyogcnVuX3Jlc29sdXRpb24gKi8KKwkJCQkwLAkJLyogIG9mZnNldCAqLworCQkJCURJX1NZTkNfTk9ORSwJLyogb2Zmc2V0IHJlc29sdXRpb24gKi8KKwkJCQloZWlnaHQgLyAyLAkvKiByZXBlYXQgY291bnQgKi8KKwkJCQk0LAkJLyogQ05UX0NMUl9TRUwgKi8KKwkJCQkwLAkJLyogQ05UX1BPTEFSSVRZX0dFTl9FTiAqLworCQkJCURJX1NZTkNfTk9ORSwJLyogQ05UX1BPTEFSSVRZX0NMUl9TRUwgKi8KKwkJCQlESV9TWU5DX05PTkUsCS8qIENOVF9QT0xBUklUWV9UUklHR0VSX1NFTCAqLworCQkJCTAsCQkvKiBDT1VOVCBVUCAqLworCQkJCTAJCS8qIENPVU5UIERPV04gKi8KKwkJCQkpOworCisJCS8qIEZpZWxkIDAgVlNZTkMgd2F2ZWZvcm0gKi8KKwkJaXB1X2RpX3N5bmNfY29uZmlnKAorCQkJCWRpc3AsCQkvKiBkaXNwbGF5ICovCisJCQkJNiwJCS8qIGNvdW50ZXIgKi8KKwkJCQl2X3RvdGFsIC0gMSwJLyogcnVuIGNvdW50ICovCisJCQkJRElfU1lOQ19IU1lOQywJLyogcnVuX3Jlc29sdXRpb24gKi8KKwkJCQkwLAkJLyogb2Zmc2V0ICovCisJCQkJRElfU1lOQ19OT05FLAkvKiBvZmZzZXQgcmVzb2x1dGlvbiAqLworCQkJCTAsCQkvKiByZXBlYXQgY291bnQgKi8KKwkJCQlESV9TWU5DX05PTkUsCS8qIENOVF9DTFJfU0VMICAqLworCQkJCTAsCQkvKiBDTlRfUE9MQVJJVFlfR0VOX0VOICovCisJCQkJRElfU1lOQ19OT05FLAkvKiBDTlRfUE9MQVJJVFlfQ0xSX1NFTCAqLworCQkJCURJX1NZTkNfTk9ORSwJLyogQ05UX1BPTEFSSVRZX1RSSUdHRVJfU0VMICovCisJCQkJMCwJCS8qIENPVU5UIFVQICovCisJCQkJMAkJLyogQ09VTlQgRE9XTiAqLworCQkJCSk7CisKKwkJLyogREMgVlNZTkMgd2F2ZWZvcm0gKi8KKwkJdnN5bmNfY250ID0gNzsKKwkJaXB1X2RpX3N5bmNfY29uZmlnKAorCQkJCWRpc3AsCQkvKiBkaXNwbGF5ICovCisJCQkJNywJCS8qIGNvdW50ZXIgKi8KKwkJCQl2X3RvdGFsIC8gMiAtIDEsLyogcnVuIGNvdW50ICovCisJCQkJRElfU1lOQ19IU1lOQywJLyogcnVuX3Jlc29sdXRpb24gICovCisJCQkJOSwJCS8qIG9mZnNldCAgKi8KKwkJCQlESV9TWU5DX0hTWU5DLAkvKiBvZmZzZXQgcmVzb2x1dGlvbiAqLworCQkJCTIsCQkvKiByZXBlYXQgY291bnQgKi8KKwkJCQlESV9TWU5DX1ZTWU5DLAkvKiBDTlRfQ0xSX1NFTCAqLworCQkJCTAsCQkvKiBDTlRfUE9MQVJJVFlfR0VOX0VOICovCisJCQkJRElfU1lOQ19OT05FLAkvKiBDTlRfUE9MQVJJVFlfQ0xSX1NFTCAqLworCQkJCURJX1NZTkNfTk9ORSwJLyogQ05UX1BPTEFSSVRZX1RSSUdHRVJfU0VMICovCisJCQkJMCwJCS8qIENPVU5UIFVQICovCisJCQkJMAkJLyogQ09VTlQgRE9XTiAqLworCQkJCSk7CisKKwkJLyogYWN0aXZlIHBpeGVsIHdhdmVmb3JtICovCisJCWlwdV9kaV9zeW5jX2NvbmZpZygKKwkJCQlkaXNwLAkJLyogZGlzcGxheSAqLworCQkJCTgsCQkvKiBjb3VudGVyICovCisJCQkJMCwJCS8qIHJ1biBjb3VudCAgKi8KKwkJCQlESV9TWU5DX0NMSywJLyogcnVuX3Jlc29sdXRpb24gKi8KKwkJCQloX3N0YXJ0X3dpZHRoLAkvKiBvZmZzZXQgICovCisJCQkJRElfU1lOQ19DTEssCS8qIG9mZnNldCByZXNvbHV0aW9uICovCisJCQkJd2lkdGgsCQkvKiByZXBlYXQgY291bnQgICovCisJCQkJNSwJCS8qIENOVF9DTFJfU0VMICAqLworCQkJCTAsCQkvKiBDTlRfUE9MQVJJVFlfR0VOX0VOICAqLworCQkJCURJX1NZTkNfTk9ORSwJLyogQ05UX1BPTEFSSVRZX0NMUl9TRUwgKi8KKwkJCQlESV9TWU5DX05PTkUsCS8qIENOVF9QT0xBUklUWV9UUklHR0VSX1NFTCAgKi8KKwkJCQkwLAkJLyogQ09VTlQgVVAgICovCisJCQkJMAkJLyogQ09VTlQgRE9XTiAqLworCQkJCSk7CisKKwkJaXB1X2RpX3N5bmNfY29uZmlnKAorCQkJCWRpc3AsCQkvKiBkaXNwbGF5ICovCisJCQkJOSwJCS8qIGNvdW50ZXIgKi8KKwkJCQl2X3RvdGFsIC0gMSwJLyogcnVuIGNvdW50ICovCisJCQkJRElfU1lOQ19JTlRfSFNZTkMsLyogcnVuX3Jlc29sdXRpb24gKi8KKwkJCQl2X3RvdGFsIC8gMiwJLyogb2Zmc2V0ICAqLworCQkJCURJX1NZTkNfSU5UX0hTWU5DLC8qIG9mZnNldCByZXNvbHV0aW9uICAqLworCQkJCTAsCQkvKiByZXBlYXQgY291bnQgKi8KKwkJCQlESV9TWU5DX0hTWU5DLAkvKiBDTlRfQ0xSX1NFTCAqLworCQkJCTAsCQkvKiBDTlRfUE9MQVJJVFlfR0VOX0VOICAqLworCQkJCURJX1NZTkNfTk9ORSwJLyogQ05UX1BPTEFSSVRZX0NMUl9TRUwgICovCisJCQkJRElfU1lOQ19OT05FLAkvKiBDTlRfUE9MQVJJVFlfVFJJR0dFUl9TRUwgKi8KKwkJCQkwLAkJLyogQ09VTlQgVVAgKi8KKwkJCQk0CQkvKiBDT1VOVCBET1dOICovCisJCQkJKTsKKworCQkvKiBzZXQgZ2VudGltZSBzZWxlY3QgYW5kIHRhZyBzZWwgKi8KKwkJcmVnID0gX19yYXdfcmVhZGwoRElfU1dfR0VOMShkaXNwLCA5KSk7CisJCXJlZyAmPSAweDFGRkZGRkZGOworCQlyZWcgfD0gKDMgLSAxKTw8MjkgfCAweDAwMDA4MDAwOworCQlfX3Jhd193cml0ZWwocmVnLCBESV9TV19HRU4xKGRpc3AsIDkpKTsKKworCQlfX3Jhd193cml0ZWwodl90b3RhbCAvIDIgLSAxLCBESV9TQ1JfQ09ORihkaXNwKSk7CisKKwkJLyogc2V0IHlfc2VsID0gMSAqLworCQlkaV9nZW4gfD0gMHgxMDAwMDAwMDsKKwkJZGlfZ2VuIHw9IERJX0dFTl9QT0xBUklUWV81OworCQlkaV9nZW4gfD0gRElfR0VOX1BPTEFSSVRZXzg7CisJfSBlbHNlIHsKKwkJLyogU2V0dXAgaW50ZXJuYWwgSFNZTkMgd2F2ZWZvcm0gKi8KKwkJaXB1X2RpX3N5bmNfY29uZmlnKGRpc3AsIDEsIGhfdG90YWwgLSAxLCBESV9TWU5DX0NMSywKKwkJCQkwLCBESV9TWU5DX05PTkUsIDAsIERJX1NZTkNfTk9ORSwKKwkJCQkwLCBESV9TWU5DX05PTkUsCisJCQkJRElfU1lOQ19OT05FLCAwLCAwKTsKKworCQkvKiBTZXR1cCBleHRlcm5hbCAoZGVsYXllZCkgSFNZTkMgd2F2ZWZvcm0gKi8KKwkJaXB1X2RpX3N5bmNfY29uZmlnKGRpc3AsIERJX1NZTkNfSFNZTkMsIGhfdG90YWwgLSAxLAorCQkJCURJX1NZTkNfQ0xLLCBkaXYgKiB2X3RvX2hfc3luYywgRElfU1lOQ19DTEssCisJCQkJMCwgRElfU1lOQ19OT05FLCAxLCBESV9TWU5DX05PTkUsCisJCQkJRElfU1lOQ19DTEssIDAsIGhfc3luY193aWR0aCAqIDIpOworCQkvKiBTZXR1cCBWU1lOQyB3YXZlZm9ybSAqLworCQl2c3luY19jbnQgPSBESV9TWU5DX1ZTWU5DOworCQlpcHVfZGlfc3luY19jb25maWcoZGlzcCwgRElfU1lOQ19WU1lOQywgdl90b3RhbCAtIDEsCisJCQkJRElfU1lOQ19JTlRfSFNZTkMsIDAsIERJX1NZTkNfTk9ORSwgMCwKKwkJCQlESV9TWU5DX05PTkUsIDEsIERJX1NZTkNfTk9ORSwKKwkJCQlESV9TWU5DX0lOVF9IU1lOQywgMCwgdl9zeW5jX3dpZHRoICogMik7CisJCV9fcmF3X3dyaXRlbCh2X3RvdGFsIC0gMSwgRElfU0NSX0NPTkYoZGlzcCkpOworCisJCS8qIFNldHVwIGFjdGl2ZSBkYXRhIHdhdmVmb3JtIHRvIHN5bmMgd2l0aCBEQyAqLworCQlpcHVfZGlfc3luY19jb25maWcoZGlzcCwgNCwgMCwgRElfU1lOQ19IU1lOQywKKwkJCQl2X3N5bmNfd2lkdGggKyB2X3N0YXJ0X3dpZHRoLCBESV9TWU5DX0hTWU5DLAorCQkJCWhlaWdodCwKKwkJCQlESV9TWU5DX1ZTWU5DLCAwLCBESV9TWU5DX05PTkUsCisJCQkJRElfU1lOQ19OT05FLCAwLCAwKTsKKwkJaXB1X2RpX3N5bmNfY29uZmlnKGRpc3AsIDUsIDAsIERJX1NZTkNfQ0xLLAorCQkJCWhfc3luY193aWR0aCArIGhfc3RhcnRfd2lkdGgsIERJX1NZTkNfQ0xLLAorCQkJCXdpZHRoLCA0LCAwLCBESV9TWU5DX05PTkUsIERJX1NZTkNfTk9ORSwgMCwKKwkJCQkwKTsKKworCQkvKiByZXNldCBhbGwgdW51c2VkIGNvdW50ZXJzICovCisJCV9fcmF3X3dyaXRlbCgwLCBESV9TV19HRU4wKGRpc3AsIDYpKTsKKwkJX19yYXdfd3JpdGVsKDAsIERJX1NXX0dFTjEoZGlzcCwgNikpOworCQlfX3Jhd193cml0ZWwoMCwgRElfU1dfR0VOMChkaXNwLCA3KSk7CisJCV9fcmF3X3dyaXRlbCgwLCBESV9TV19HRU4xKGRpc3AsIDcpKTsKKwkJX19yYXdfd3JpdGVsKDAsIERJX1NXX0dFTjAoZGlzcCwgOCkpOworCQlfX3Jhd193cml0ZWwoMCwgRElfU1dfR0VOMShkaXNwLCA4KSk7CisJCV9fcmF3X3dyaXRlbCgwLCBESV9TV19HRU4wKGRpc3AsIDkpKTsKKwkJX19yYXdfd3JpdGVsKDAsIERJX1NXX0dFTjEoZGlzcCwgOSkpOworCisJCXJlZyA9IF9fcmF3X3JlYWRsKERJX1NUUF9SRVAoZGlzcCwgNikpOworCQlyZWcgJj0gMHgwMDAwRkZGRjsKKwkJX19yYXdfd3JpdGVsKHJlZywgRElfU1RQX1JFUChkaXNwLCA2KSk7CisJCV9fcmF3X3dyaXRlbCgwLCBESV9TVFBfUkVQKGRpc3AsIDcpKTsKKwkJX19yYXdfd3JpdGVsKDAsIERJX1NUUF9SRVAoZGlzcCwgOSkpOworCisJCS8qIEluaXQgdGVtcGxhdGUgbWljcm9jb2RlICovCisJCWlmIChkaXNwKSB7CisJCSAgIGlwdV9kY193cml0ZV90bXBsKDIsIFdST0QoMCksIDAsIG1hcCwgU1lOQ19XQVZFLCA4LCA1KTsKKwkJICAgaXB1X2RjX3dyaXRlX3RtcGwoMywgV1JPRCgwKSwgMCwgbWFwLCBTWU5DX1dBVkUsIDQsIDUpOworCQkgICBpcHVfZGNfd3JpdGVfdG1wbCg0LCBXUk9EKDApLCAwLCBtYXAsIFNZTkNfV0FWRSwgMCwgNSk7CisJCX0gZWxzZSB7CisJCSAgIGlwdV9kY193cml0ZV90bXBsKDUsIFdST0QoMCksIDAsIG1hcCwgU1lOQ19XQVZFLCA4LCA1KTsKKwkJICAgaXB1X2RjX3dyaXRlX3RtcGwoNiwgV1JPRCgwKSwgMCwgbWFwLCBTWU5DX1dBVkUsIDQsIDUpOworCQkgICBpcHVfZGNfd3JpdGVfdG1wbCg3LCBXUk9EKDApLCAwLCBtYXAsIFNZTkNfV0FWRSwgMCwgNSk7CisJCX0KKworCQlpZiAoc2lnLkhzeW5jX3BvbCkKKwkJCWRpX2dlbiB8PSBESV9HRU5fUE9MQVJJVFlfMjsKKwkJaWYgKHNpZy5Wc3luY19wb2wpCisJCQlkaV9nZW4gfD0gRElfR0VOX1BPTEFSSVRZXzM7CisKKwkJaWYgKHNpZy5jbGtfcG9sKQorCQkJZGlfZ2VuIHw9IERJX0dFTl9QT0xfQ0xLOworCisJfQorCisJX19yYXdfd3JpdGVsKGRpX2dlbiwgRElfR0VORVJBTChkaXNwKSk7CisKKwlfX3Jhd193cml0ZWwoKC0tdnN5bmNfY250IDw8IERJX1ZTWU5DX1NFTF9PRkZTRVQpIHwKKwkJCTB4MDAwMDAwMDIsIERJX1NZTkNfQVNfR0VOKGRpc3ApKTsKKworCXJlZyA9IF9fcmF3X3JlYWRsKERJX1BPTChkaXNwKSk7CisJcmVnICY9IH4oRElfUE9MX0RSRFlfREFUQV9QT0xBUklUWSB8IERJX1BPTF9EUkRZX1BPTEFSSVRZXzE1KTsKKwlpZiAoc2lnLmVuYWJsZV9wb2wpCisJCXJlZyB8PSBESV9QT0xfRFJEWV9QT0xBUklUWV8xNTsKKwlpZiAoc2lnLmRhdGFfcG9sKQorCQlyZWcgfD0gRElfUE9MX0RSRFlfREFUQV9QT0xBUklUWTsKKwlfX3Jhd193cml0ZWwocmVnLCBESV9QT0woZGlzcCkpOworCisJX19yYXdfd3JpdGVsKHdpZHRoLCBEQ19ESVNQX0NPTkYyKERDX0RJU1BfSURfU1lOQyhkaXNwKSkpOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgcGxhbmUgZ2xvYmFsIGFscGhhIGJsZW5kaW5nCisgKiBtb2Rlcy4gVGhpcyBmdW5jdGlvbiBhbHNvIHNldHMgdGhlIERQIGdyYXBoaWMgcGxhbmUgYWNjb3JkaW5nIHRvIHRoZQorICogcGFyYW1ldGVyIG9mIElQVXYzIERQIGNoYW5uZWwuCisgKgorICogQHBhcmFtCWNoYW5uZWwJCUlQVXYzIERQIGNoYW5uZWwKKyAqCisgKiBAcGFyYW0gICAgICAgZW5hYmxlICAgICAgICAgIEJvb2xlYW4gdG8gZW5hYmxlIG9yIGRpc2FibGUgZ2xvYmFsIGFscGhhCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kaW5nLiBJZiBkaXNhYmxlZCwgbG9jYWwgYmxlbmRpbmcgaXMgdXNlZC4KKyAqCisgKiBAcGFyYW0gICAgICAgYWxwaGEgICAgICAgICAgIEdsb2JhbCBhbHBoYSB2YWx1ZS4KKyAqCisgKiBAcmV0dXJuICAgICAgUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsCisgKi8KK2ludDMyX3QgaXB1X2Rpc3Bfc2V0X2dsb2JhbF9hbHBoYShpcHVfY2hhbm5lbF90IGNoYW5uZWwsIHVuc2lnbmVkIGNoYXIgZW5hYmxlLAorCQkJCSAgdWludDhfdCBhbHBoYSkKK3sKKwl1aW50MzJfdCByZWc7CisJdWludDMyX3QgZmxvdzsKKworCXVuc2lnbmVkIGNoYXIgYmdfY2hhbjsKKworCWlmIChjaGFubmVsID09IE1FTV9CR19TWU5DIHx8IGNoYW5uZWwgPT0gTUVNX0ZHX1NZTkMpCisJCWZsb3cgPSBEUF9TWU5DOworCWVsc2UgaWYgKGNoYW5uZWwgPT0gTUVNX0JHX0FTWU5DMCB8fCBjaGFubmVsID09IE1FTV9GR19BU1lOQzApCisJCWZsb3cgPSBEUF9BU1lOQzA7CisJZWxzZSBpZiAoY2hhbm5lbCA9PSBNRU1fQkdfQVNZTkMxIHx8IGNoYW5uZWwgPT0gTUVNX0ZHX0FTWU5DMSkKKwkJZmxvdyA9IERQX0FTWU5DMTsKKwllbHNlCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGNoYW5uZWwgPT0gTUVNX0JHX1NZTkMgfHwgY2hhbm5lbCA9PSBNRU1fQkdfQVNZTkMwIHx8CisJICAgIGNoYW5uZWwgPT0gTUVNX0JHX0FTWU5DMSkKKwkJYmdfY2hhbiA9IDE7CisJZWxzZQorCQliZ19jaGFuID0gMDsKKworCWlmICghZ19pcHVfY2xrX2VuYWJsZWQpCisJCWNsa19lbmFibGUoZ19pcHVfY2xrKTsKKworCWlmIChiZ19jaGFuKSB7CisJCXJlZyA9IF9fcmF3X3JlYWRsKERQX0NPTV9DT05GKGZsb3cpKTsKKwkJX19yYXdfd3JpdGVsKHJlZyAmIH5EUF9DT01fQ09ORl9HV1NFTCwgRFBfQ09NX0NPTkYoZmxvdykpOworCX0gZWxzZSB7CisJCXJlZyA9IF9fcmF3X3JlYWRsKERQX0NPTV9DT05GKGZsb3cpKTsKKwkJX19yYXdfd3JpdGVsKHJlZyB8IERQX0NPTV9DT05GX0dXU0VMLCBEUF9DT01fQ09ORihmbG93KSk7CisJfQorCisJaWYgKGVuYWJsZSkgeworCQlyZWcgPSBfX3Jhd19yZWFkbChEUF9HUkFQSF9XSU5EX0NUUkwoZmxvdykpICYgMHgwMEZGRkZGRkw7CisJCV9fcmF3X3dyaXRlbChyZWcgfCAoKHVpbnQzMl90KSBhbHBoYSA8PCAyNCksCisJCQkgICAgIERQX0dSQVBIX1dJTkRfQ1RSTChmbG93KSk7CisKKwkJcmVnID0gX19yYXdfcmVhZGwoRFBfQ09NX0NPTkYoZmxvdykpOworCQlfX3Jhd193cml0ZWwocmVnIHwgRFBfQ09NX0NPTkZfR1dBTSwgRFBfQ09NX0NPTkYoZmxvdykpOworCX0gZWxzZSB7CisJCXJlZyA9IF9fcmF3X3JlYWRsKERQX0NPTV9DT05GKGZsb3cpKTsKKwkJX19yYXdfd3JpdGVsKHJlZyAmIH5EUF9DT01fQ09ORl9HV0FNLCBEUF9DT01fQ09ORihmbG93KSk7CisJfQorCisJcmVnID0gX19yYXdfcmVhZGwoSVBVX1NSTV9QUkkyKSB8IDB4ODsKKwlfX3Jhd193cml0ZWwocmVnLCBJUFVfU1JNX1BSSTIpOworCisJaWYgKCFnX2lwdV9jbGtfZW5hYmxlZCkKKwkJY2xrX2Rpc2FibGUoZ19pcHVfY2xrKTsKKworCXJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSB0cmFuc3BhcmVudCBjb2xvciBrZXkgZm9yIFNEQyBncmFwaGljIHBsYW5lLgorICoKKyAqIEBwYXJhbSAgICAgICBjaGFubmVsICAgICAgICAgSW5wdXQgcGFyYW1ldGVyIGZvciB0aGUgbG9naWNhbCBjaGFubmVsIElELgorICoKKyAqIEBwYXJhbSAgICAgICBlbmFibGUgICAgICAgICAgQm9vbGVhbiB0byBlbmFibGUgb3IgZGlzYWJsZSBjb2xvciBrZXkKKyAqCisgKiBAcGFyYW0gICAgICAgY29sb3JLZXkgICAgICAgIDI0LWJpdCBSR0IgY29sb3IgZm9yIHRyYW5zcGFyZW50IGNvbG9yIGtleS4KKyAqCisgKiBAcmV0dXJuICAgICAgUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsCisgKi8KK2ludDMyX3QgaXB1X2Rpc3Bfc2V0X2NvbG9yX2tleShpcHVfY2hhbm5lbF90IGNoYW5uZWwsIHVuc2lnbmVkIGNoYXIgZW5hYmxlLAorCQkJICAgICAgIHVpbnQzMl90IGNvbG9yX2tleSkKK3sKKwl1aW50MzJfdCByZWcsIGZsb3c7CisJaW50IHksIHUsIHY7CisJaW50IHJlZCwgZ3JlZW4sIGJsdWU7CisKKwlpZiAoY2hhbm5lbCA9PSBNRU1fQkdfU1lOQyB8fCBjaGFubmVsID09IE1FTV9GR19TWU5DKQorCQlmbG93ID0gRFBfU1lOQzsKKwllbHNlIGlmIChjaGFubmVsID09IE1FTV9CR19BU1lOQzAgfHwgY2hhbm5lbCA9PSBNRU1fRkdfQVNZTkMwKQorCQlmbG93ID0gRFBfQVNZTkMwOworCWVsc2UgaWYgKGNoYW5uZWwgPT0gTUVNX0JHX0FTWU5DMSB8fCBjaGFubmVsID09IE1FTV9GR19BU1lOQzEpCisJCWZsb3cgPSBEUF9BU1lOQzE7CisJZWxzZQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICghZ19pcHVfY2xrX2VuYWJsZWQpCisJCWNsa19lbmFibGUoZ19pcHVfY2xrKTsKKworCWNvbG9yX2tleV80cmdiID0gMTsKKwkvKiBUcmFuc2Zvcm0gY29sb3Iga2V5IGZyb20gcmdiIHRvIHl1diBpZiBDU0MgaXMgZW5hYmxlZCAqLworCWlmICgoKGZnX2NzY190eXBlID09IFJHQjJZVVYpICYmIChiZ19jc2NfdHlwZSA9PSBZVVYyWVVWKSkgfHwKKwkJKChmZ19jc2NfdHlwZSA9PSBZVVYyWVVWKSAmJiAoYmdfY3NjX3R5cGUgPT0gUkdCMllVVikpIHx8CisJCSgoZmdfY3NjX3R5cGUgPT0gWVVWMllVVikgJiYgKGJnX2NzY190eXBlID09IFlVVjJZVVYpKSB8fAorCQkoKGZnX2NzY190eXBlID09IFlVVjJSR0IpICYmIChiZ19jc2NfdHlwZSA9PSBZVVYyUkdCKSkpIHsKKworCQlkZWJ1ZygiY29sb3Iga2V5IDB4JXggbmVlZCBjaGFuZ2UgdG8geXV2IGZtdFxuIiwgY29sb3Jfa2V5KTsKKworCQlyZWQgPSAoY29sb3Jfa2V5ID4+IDE2KSAmIDB4RkY7CisJCWdyZWVuID0gKGNvbG9yX2tleSA+PiA4KSAmIDB4RkY7CisJCWJsdWUgPSBjb2xvcl9rZXkgJiAweEZGOworCisJCXkgPSByZ2JfdG9feXV2KDAsIHJlZCwgZ3JlZW4sIGJsdWUpOworCQl1ID0gcmdiX3RvX3l1digxLCByZWQsIGdyZWVuLCBibHVlKTsKKwkJdiA9IHJnYl90b195dXYoMiwgcmVkLCBncmVlbiwgYmx1ZSk7CisJCWNvbG9yX2tleSA9ICh5IDw8IDE2KSB8ICh1IDw8IDgpIHwgdjsKKworCQljb2xvcl9rZXlfNHJnYiA9IDA7CisKKwkJZGVidWcoImNvbG9yIGtleSBjaGFuZ2UgdG8geXV2IGZtdCAweCV4XG4iLCBjb2xvcl9rZXkpOworCX0KKworCWlmIChlbmFibGUpIHsKKwkJcmVnID0gX19yYXdfcmVhZGwoRFBfR1JBUEhfV0lORF9DVFJMKGZsb3cpKSAmIDB4RkYwMDAwMDBMOworCQlfX3Jhd193cml0ZWwocmVnIHwgY29sb3Jfa2V5LCBEUF9HUkFQSF9XSU5EX0NUUkwoZmxvdykpOworCisJCXJlZyA9IF9fcmF3X3JlYWRsKERQX0NPTV9DT05GKGZsb3cpKTsKKwkJX19yYXdfd3JpdGVsKHJlZyB8IERQX0NPTV9DT05GX0dXQ0tFLCBEUF9DT01fQ09ORihmbG93KSk7CisJfSBlbHNlIHsKKwkJcmVnID0gX19yYXdfcmVhZGwoRFBfQ09NX0NPTkYoZmxvdykpOworCQlfX3Jhd193cml0ZWwocmVnICYgfkRQX0NPTV9DT05GX0dXQ0tFLCBEUF9DT01fQ09ORihmbG93KSk7CisJfQorCisJcmVnID0gX19yYXdfcmVhZGwoSVBVX1NSTV9QUkkyKSB8IDB4ODsKKwlfX3Jhd193cml0ZWwocmVnLCBJUFVfU1JNX1BSSTIpOworCisJaWYgKCFnX2lwdV9jbGtfZW5hYmxlZCkKKwkJY2xrX2Rpc2FibGUoZ19pcHVfY2xrKTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9pcHVfcmVncy5oIGIvZHJpdmVycy92aWRlby9pcHVfcmVncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZjA3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3ZpZGVvL2lwdV9yZWdzLmgKQEAgLTAsMCArMSw0MTggQEAKKy8qCisgKiBQb3J0aW5nIHRvIHUtYm9vdDoKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMTAKKyAqIFN0ZWZhbm8gQmFiaWMsIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHNiYWJpY0BkZW54LmRlCisgKgorICogTGludXggSVBVIGRyaXZlciBmb3IgTVg1MToKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDUtMjAwOSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX19JUFVfUkVHU19JTkNMVURFRF9fCisjZGVmaW5lIF9fSVBVX1JFR1NfSU5DTFVERURfXworCisjZGVmaW5lIElQVV9ESVNQMF9CQVNFCQkweDAwMDAwMDAwCisjZGVmaW5lIElQVV9NQ1VfVF9ERUZBVUxUCTgKKyNkZWZpbmUgSVBVX0RJU1AxX0JBU0UJCShJUFVfTUNVX1RfREVGQVVMVCA8PCAyNSkKKyNkZWZpbmUgSVBVX0NNX1JFR19CQVNFCQkweDFFMDAwMDAwCisjZGVmaW5lIElQVV9TVEFUX1JFR19CQVNFCTB4MUUwMDAyMDAKKyNkZWZpbmUgSVBVX0lETUFDX1JFR19CQVNFCTB4MUUwMDgwMDAKKyNkZWZpbmUgSVBVX0lTUF9SRUdfQkFTRQkweDFFMDEwMDAwCisjZGVmaW5lIElQVV9EUF9SRUdfQkFTRQkJMHgxRTAxODAwMAorI2RlZmluZSBJUFVfSUNfUkVHX0JBU0UJCTB4MUUwMjAwMDAKKyNkZWZpbmUgSVBVX0lSVF9SRUdfQkFTRQkweDFFMDI4MDAwCisjZGVmaW5lIElQVV9DU0kwX1JFR19CQVNFCTB4MUUwMzAwMDAKKyNkZWZpbmUgSVBVX0NTSTFfUkVHX0JBU0UJMHgxRTAzODAwMAorI2RlZmluZSBJUFVfREkwX1JFR19CQVNFCTB4MUUwNDAwMDAKKyNkZWZpbmUgSVBVX0RJMV9SRUdfQkFTRQkweDFFMDQ4MDAwCisjZGVmaW5lIElQVV9TTUZDX1JFR19CQVNFCTB4MUUwNTAwMDAKKyNkZWZpbmUgSVBVX0RDX1JFR19CQVNFCQkweDFFMDU4MDAwCisjZGVmaW5lIElQVV9ETUZDX1JFR19CQVNFCTB4MUUwNjAwMDAKKyNkZWZpbmUgSVBVX0NQTUVNX1JFR19CQVNFCTB4MUYwMDAwMDAKKyNkZWZpbmUgSVBVX0xVVF9SRUdfQkFTRQkweDFGMDIwMDAwCisjZGVmaW5lIElQVV9TUk1fUkVHX0JBU0UJMHgxRjA0MDAwMAorI2RlZmluZSBJUFVfVFBNX1JFR19CQVNFCTB4MUYwNjAwMDAKKyNkZWZpbmUgSVBVX0RDX1RNUExfUkVHX0JBU0UJMHgxRjA4MDAwMAorI2RlZmluZSBJUFVfSVNQX1RCUFJfUkVHX0JBU0UJMHgxRjBDMDAwMAorI2RlZmluZSBJUFVfVkRJX1JFR19CQVNFCTB4MUUwNjgwMDAKKworCitleHRlcm4gdTMyICppcHVfZGNfdG1wbF9yZWc7CisKKyNkZWZpbmUgRENfRVZUX05GCQkwCisjZGVmaW5lIERDX0VWVF9OTAkJMQorI2RlZmluZSBEQ19FVlRfRU9GCQkyCisjZGVmaW5lIERDX0VWVF9ORklFTEQJCTMKKyNkZWZpbmUgRENfRVZUX0VPTAkJNAorI2RlZmluZSBEQ19FVlRfRU9GSUVMRAkJNQorI2RlZmluZSBEQ19FVlRfTkVXX0FERFIJCTYKKyNkZWZpbmUgRENfRVZUX05FV19DSEFOCQk3CisjZGVmaW5lIERDX0VWVF9ORVdfREFUQQkJOAorCisjZGVmaW5lIERDX0VWVF9ORVdfQUREUl9XXzAJMAorI2RlZmluZSBEQ19FVlRfTkVXX0FERFJfV18xCTEKKyNkZWZpbmUgRENfRVZUX05FV19DSEFOX1dfMAkyCisjZGVmaW5lIERDX0VWVF9ORVdfQ0hBTl9XXzEJMworI2RlZmluZSBEQ19FVlRfTkVXX0RBVEFfV18wCTQKKyNkZWZpbmUgRENfRVZUX05FV19EQVRBX1dfMQk1CisjZGVmaW5lIERDX0VWVF9ORVdfQUREUl9SXzAJNgorI2RlZmluZSBEQ19FVlRfTkVXX0FERFJfUl8xCTcKKyNkZWZpbmUgRENfRVZUX05FV19DSEFOX1JfMAk4CisjZGVmaW5lIERDX0VWVF9ORVdfQ0hBTl9SXzEJOQorI2RlZmluZSBEQ19FVlRfTkVXX0RBVEFfUl8wCTEwCisjZGVmaW5lIERDX0VWVF9ORVdfREFUQV9SXzEJMTEKKworLyogU29mdHdhcmUgcmVzZXQgZm9yIGlwdSAqLworI2RlZmluZSBTV19JUFVfUlNUCTgKKworZW51bSB7CisJSVBVX0NPTkZfRFBfRU4gPSAweDAwMDAwMDIwLAorCUlQVV9DT05GX0RJMF9FTiA9IDB4MDAwMDAwNDAsCisJSVBVX0NPTkZfREkxX0VOID0gMHgwMDAwMDA4MCwKKwlJUFVfQ09ORl9ETUZDX0VOID0gMHgwMDAwMDQwMCwKKwlJUFVfQ09ORl9EQ19FTiA9IDB4MDAwMDAyMDAsCisKKwlESTBfQ09VTlRFUl9SRUxFQVNFID0gMHgwMTAwMDAwMCwKKwlESTFfQ09VTlRFUl9SRUxFQVNFID0gMHgwMjAwMDAwMCwKKworCURJX0RXX0dFTl9BQ0NFU1NfU0laRV9PRkZTRVQgPSAyNCwKKwlESV9EV19HRU5fQ09NUE9ORU5UX1NJWkVfT0ZGU0VUID0gMTYsCisKKwlESV9HRU5fRElfQ0xLX0VYVCA9IDB4MTAwMDAwLAorCURJX0dFTl9QT0xBUklUWV8xID0gMHgwMDAwMDAwMSwKKwlESV9HRU5fUE9MQVJJVFlfMiA9IDB4MDAwMDAwMDIsCisJRElfR0VOX1BPTEFSSVRZXzMgPSAweDAwMDAwMDA0LAorCURJX0dFTl9QT0xBUklUWV80ID0gMHgwMDAwMDAwOCwKKwlESV9HRU5fUE9MQVJJVFlfNSA9IDB4MDAwMDAwMTAsCisJRElfR0VOX1BPTEFSSVRZXzYgPSAweDAwMDAwMDIwLAorCURJX0dFTl9QT0xBUklUWV83ID0gMHgwMDAwMDA0MCwKKwlESV9HRU5fUE9MQVJJVFlfOCA9IDB4MDAwMDAwODAsCisJRElfR0VOX1BPTF9DTEsgPSAweDIwMDAwLAorCisJRElfUE9MX0RSRFlfREFUQV9QT0xBUklUWSA9IDB4MDAwMDAwODAsCisJRElfUE9MX0RSRFlfUE9MQVJJVFlfMTUgPSAweDAwMDAwMDEwLAorCURJX1ZTWU5DX1NFTF9PRkZTRVQgPSAxMywKKworCURDX1dSX0NIX0NPTkZfRklFTERfTU9ERSA9IDB4MDAwMDAyMDAsCisJRENfV1JfQ0hfQ09ORl9QUk9HX1RZUEVfT0ZGU0VUID0gNSwKKwlEQ19XUl9DSF9DT05GX1BST0dfVFlQRV9NQVNLID0gMHgwMDAwMDBFMCwKKwlEQ19XUl9DSF9DT05GX1BST0dfRElfSUQgPSAweDAwMDAwMDA0LAorCURDX1dSX0NIX0NPTkZfUFJPR19ESVNQX0lEX09GRlNFVCA9IDMsCisJRENfV1JfQ0hfQ09ORl9QUk9HX0RJU1BfSURfTUFTSyA9IDB4MDAwMDAwMTgsCisKKwlEUF9DT01fQ09ORl9GR19FTiA9IDB4MDAwMDAwMDEsCisJRFBfQ09NX0NPTkZfR1dTRUwgPSAweDAwMDAwMDAyLAorCURQX0NPTV9DT05GX0dXQU0gPSAweDAwMDAwMDA0LAorCURQX0NPTV9DT05GX0dXQ0tFID0gMHgwMDAwMDAwOCwKKwlEUF9DT01fQ09ORl9DU0NfREVGX01BU0sgPSAweDAwMDAwMzAwLAorCURQX0NPTV9DT05GX0NTQ19ERUZfT0ZGU0VUID0gOCwKKwlEUF9DT01fQ09ORl9DU0NfREVGX0ZHID0gMHgwMDAwMDMwMCwKKwlEUF9DT01fQ09ORl9DU0NfREVGX0JHID0gMHgwMDAwMDIwMCwKKwlEUF9DT01fQ09ORl9DU0NfREVGX0JPVEggPSAweDAwMDAwMTAwLAorCURQX0NPTV9DT05GX0dBTU1BX0VOID0gMHgwMDAwMTAwMCwKKwlEUF9DT01fQ09ORl9HQU1NQV9ZVVZfRU4gPSAweDAwMDAyMDAwLAorfTsKKworZW51bSBkaV9waW5zIHsKKwlESV9QSU4xMSA9IDAsCisJRElfUElOMTIgPSAxLAorCURJX1BJTjEzID0gMiwKKwlESV9QSU4xNCA9IDMsCisJRElfUElOMTUgPSA0LAorCURJX1BJTjE2ID0gNSwKKwlESV9QSU4xNyA9IDYsCisJRElfUElOX0NTID0gNywKKworCURJX1BJTl9TRVJfQ0xLID0gMCwKKwlESV9QSU5fU0VSX1JTID0gMSwKK307CisKK2VudW0gZGlfc3luY193YXZlIHsKKwlESV9TWU5DX05PTkUgPSAtMSwKKwlESV9TWU5DX0NMSyA9IDAsCisJRElfU1lOQ19JTlRfSFNZTkMgPSAxLAorCURJX1NZTkNfSFNZTkMgPSAyLAorCURJX1NZTkNfVlNZTkMgPSAzLAorCURJX1NZTkNfREUgPSA1LAorfTsKKworc3RydWN0IGlwdV9jbSB7CisJdTMyIGNvbmY7CisJdTMyIHNpc2dfY3RybDA7CisJdTMyIHNpc2dfY3RybDE7CisJdTMyIHNpc2dfc2V0WzZdOworCXUzMiBzaXNnX2NsZWFyWzZdOworCXUzMiBpbnRfY3RybFsxNV07CisJdTMyIHNkbWFfZXZlbnRbMTBdOworCXUzMiBzcm1fcHJpMTsKKwl1MzIgc3JtX3ByaTI7CisJdTMyIGZzX3Byb2NfZmxvd1szXTsKKwl1MzIgZnNfZGlzcF9mbG93WzJdOworCXUzMiBza2lwOworCXUzMiBkaXNwX2FsdF9jb25mOworCXUzMiBkaXNwX2dlbjsKKwl1MzIgZGlzcF9hbHRbNF07CisJdTMyIHNub29wOworCXUzMiBtZW1fcnN0OworCXUzMiBwbTsKKwl1MzIgZ3ByOworCXUzMiByZXNlcnZlZDBbMjZdOworCXUzMiBjaF9kYl9tb2RlX3NlbFsyXTsKKwl1MzIgcmVzZXJ2ZWQxWzE2XTsKKwl1MzIgYWx0X2NoX2RiX21vZGVfc2VsWzJdOworCXUzMiByZXNlcnZlZDJbMl07CisJdTMyIGNoX3RyYl9tb2RlX3NlbFsyXTsKK307CisKK3N0cnVjdCBpcHVfaWRtYWMgeworCXUzMiBjb25mOworCXUzMiBjaF9lblsyXTsKKwl1MzIgc2VwX2FscGhhOworCXUzMiBhbHRfc2VwX2FscGhhOworCXUzMiBjaF9wcmlbMl07CisJdTMyIHdtX2VuWzJdOworCXUzMiBsb2NrX2VuWzJdOworCXUzMiBzdWJfYWRkcls1XTsKKwl1MzIgYm5kbV9lblsyXTsKKwl1MzIgc2NfY29yZFsyXTsKKwl1MzIgcmVzZXJ2ZWRbNDVdOworCXUzMiBjaF9idXN5WzJdOworfTsKKworc3RydWN0IGlwdV9jb21fYXN5bmMgeworCXUzMiBjb21fY29uZl9hc3luYzsKKwl1MzIgZ3JhcGhfd2luZF9jdHJsX2FzeW5jOworCXUzMiBmZ19wb3NfYXN5bmM7CisJdTMyIGN1cl9wb3NfYXN5bmM7CisJdTMyIGN1cl9tYXBfYXN5bmM7CisJdTMyIGdhbW1hX2NfYXN5bmNbOF07CisJdTMyIGdhbW1hX3NfYXN5bmNbNF07CisJdTMyIGRwX2NzY2FfYXN5bmNbNF07CisJdTMyIGRwX2NzY19hc3luY1syXTsKK307CisKK3N0cnVjdCBpcHVfZHAgeworCXUzMiBjb21fY29uZl9zeW5jOworCXUzMiBncmFwaF93aW5kX2N0cmxfc3luYzsKKwl1MzIgZmdfcG9zX3N5bmM7CisJdTMyIGN1cl9wb3Nfc3luYzsKKwl1MzIgY3VyX21hcF9zeW5jOworCXUzMiBnYW1tYV9jX3N5bmNbOF07CisJdTMyIGdhbW1hX3Nfc3luY1s0XTsKKwl1MzIgY3NjYV9zeW5jWzRdOworCXUzMiBjc2Nfc3luY1syXTsKKwl1MzIgY3VyX3Bvc19hbHQ7CisJc3RydWN0IGlwdV9jb21fYXN5bmMgYXN5bmNbMl07Cit9OworCitzdHJ1Y3QgaXB1X2RpIHsKKwl1MzIgZ2VuZXJhbDsKKwl1MzIgYnNfY2xrZ2VuMDsKKwl1MzIgYnNfY2xrZ2VuMTsKKwl1MzIgc3dfZ2VuMFs5XTsKKwl1MzIgc3dfZ2VuMVs5XTsKKwl1MzIgc3luY19hczsKKwl1MzIgZHdfZ2VuWzEyXTsKKwl1MzIgZHdfc2V0WzQ4XTsKKwl1MzIgc3RwX3JlcFs0XTsKKwl1MzIgc3RwX3JlcDk7CisJdTMyIHNlcl9jb25mOworCXUzMiBzc2M7CisJdTMyIHBvbDsKKwl1MzIgYXcwOworCXUzMiBhdzE7CisJdTMyIHNjcl9jb25mOworCXUzMiBzdGF0OworfTsKKworc3RydWN0IGlwdV9zdGF0IHsKKwl1MzIgaW50X3N0YXRbMTVdOworCXUzMiBjdXJfYnVmWzJdOworCXUzMiBhbHRfY3VyX2J1Zl8wOworCXUzMiBhbHRfY3VyX2J1Zl8xOworCXUzMiBzcm1fc3RhdDsKKwl1MzIgcHJvY190YXNrX3N0YXQ7CisJdTMyIGRpc3BfdGFza19zdGF0OworCXUzMiB0cmlwbGVfY3VyX2J1Zls0XTsKKwl1MzIgY2hfYnVmMF9yZHlbMl07CisJdTMyIGNoX2J1ZjFfcmR5WzJdOworCXUzMiBhbHRfY2hfYnVmMF9yZHlbMl07CisJdTMyIGFsdF9jaF9idWYxX3JkeVsyXTsKKwl1MzIgY2hfYnVmMl9yZHlbMl07Cit9OworCitzdHJ1Y3QgaXB1X2RjX2NoIHsKKwl1MzIgd3JfY2hfY29uZjsKKwl1MzIgd3JfY2hfYWRkcjsKKwl1MzIgcmxbNV07Cit9OworCitzdHJ1Y3QgaXB1X2RjIHsKKwlzdHJ1Y3QgaXB1X2RjX2NoIGRjX2NoMF8xXzJbM107CisJdTMyIGNtZF9jaF9jb25mXzM7CisJdTMyIGNtZF9jaF9jb25mXzQ7CisJc3RydWN0IGlwdV9kY19jaCBkY19jaDVfNlsyXTsKKwlzdHJ1Y3QgaXB1X2RjX2NoIGRjX2NoODsKKwl1MzIgcmw2X2NoXzg7CisJc3RydWN0IGlwdV9kY19jaCBkY19jaDk7CisJdTMyIHJsNl9jaF85OworCXUzMiBnZW47CisJdTMyIGRpc3BfY29uZjFbNF07CisJdTMyIGRpc3BfY29uZjJbNF07CisJdTMyIGRpMF9jb25mWzJdOworCXUzMiBkaTFfY29uZlsyXTsKKwl1MzIgZGNfbWFwX3B0clsxNV07CisJdTMyIGRjX21hcF92YWxbMTJdOworCXUzMiB1ZGdlWzE2XTsKKwl1MzIgbGxhWzJdOworCXUzMiByX2xsYVsyXTsKKwl1MzIgd3JfY2hfYWRkcl81X2FsdDsKKwl1MzIgc3RhdDsKK307CisKK3N0cnVjdCBpcHVfZG1mYyB7CisJdTMyIHJkX2NoYW47CisJdTMyIHdyX2NoYW47CisJdTMyIHdyX2NoYW5fZGVmOworCXUzMiBkcF9jaGFuOworCXUzMiBkcF9jaGFuX2RlZjsKKwl1MzIgZ2VuZXJhbFsyXTsKKwl1MzIgaWNfY3RybDsKKwl1MzIgd3JfY2hhbl9hbHQ7CisJdTMyIHdyX2NoYW5fZGVmX2FsdDsKKwl1MzIgZ2VuZXJhbDFfYWx0OworCXUzMiBzdGF0OworfTsKKworI2RlZmluZSBJUFVfQ01fUkVHCQkoKHN0cnVjdCBpcHVfY20gKikoSVBVX0NUUkxfQkFTRV9BRERSICsgXAorCQkJCUlQVV9DTV9SRUdfQkFTRSkpCisjZGVmaW5lIElQVV9DT05GCQkoJklQVV9DTV9SRUctPmNvbmYpCisjZGVmaW5lIElQVV9TUk1fUFJJMQkJKCZJUFVfQ01fUkVHLT5zcm1fcHJpMSkKKyNkZWZpbmUgSVBVX1NSTV9QUkkyCQkoJklQVV9DTV9SRUctPnNybV9wcmkyKQorI2RlZmluZSBJUFVfRlNfUFJPQ19GTE9XMQkoJklQVV9DTV9SRUctPmZzX3Byb2NfZmxvd1swXSkKKyNkZWZpbmUgSVBVX0ZTX1BST0NfRkxPVzIJKCZJUFVfQ01fUkVHLT5mc19wcm9jX2Zsb3dbMV0pCisjZGVmaW5lIElQVV9GU19QUk9DX0ZMT1czCSgmSVBVX0NNX1JFRy0+ZnNfcHJvY19mbG93WzJdKQorI2RlZmluZSBJUFVfRlNfRElTUF9GTE9XMQkoJklQVV9DTV9SRUctPmZzX2Rpc3BfZmxvd1swXSkKKyNkZWZpbmUgSVBVX0RJU1BfR0VOCQkoJklQVV9DTV9SRUctPmRpc3BfZ2VuKQorI2RlZmluZSBJUFVfTUVNX1JTVAkJKCZJUFVfQ01fUkVHLT5tZW1fcnN0KQorI2RlZmluZSBJUFVfR1BSCQkJKCZJUFVfQ01fUkVHLT5ncHIpCisjZGVmaW5lIElQVV9DSEFfREJfTU9ERV9TRUwoY2gpCSgmSVBVX0NNX1JFRy0+Y2hfZGJfbW9kZV9zZWxbY2ggLyAzMl0pCisKKyNkZWZpbmUgSVBVX1NUQVQJCSgoc3RydWN0IGlwdV9zdGF0ICopKElQVV9DVFJMX0JBU0VfQUREUiArIFwKKwkJCQlJUFVfU1RBVF9SRUdfQkFTRSkpCisjZGVmaW5lIElQVV9DSEFfQ1VSX0JVRihjaCkJKCZJUFVfU1RBVC0+Y3VyX2J1ZltjaCAvIDMyXSkKKyNkZWZpbmUgSVBVX0NIQV9CVUYwX1JEWShjaCkJKCZJUFVfU1RBVC0+Y2hfYnVmMF9yZHlbY2ggLyAzMl0pCisjZGVmaW5lIElQVV9DSEFfQlVGMV9SRFkoY2gpCSgmSVBVX1NUQVQtPmNoX2J1ZjFfcmR5W2NoIC8gMzJdKQorCisjZGVmaW5lIElQVV9JTlRfQ1RSTChuKQkJKCZJUFVfQ01fUkVHLT5pbnRfY3RybFsobikgLSAxXSkKKworI2RlZmluZSBJRE1BQ19SRUcJCSgoc3RydWN0IGlwdV9pZG1hYyAqKShJUFVfQ1RSTF9CQVNFX0FERFIgKyBcCisJCQkJSVBVX0lETUFDX1JFR19CQVNFKSkKKyNkZWZpbmUgSURNQUNfQ09ORgkJKCZJRE1BQ19SRUctPmNvbmYpCisjZGVmaW5lIElETUFDX0NIQV9FTihjaCkJKCZJRE1BQ19SRUctPmNoX2VuW2NoIC8gMzJdKQorI2RlZmluZSBJRE1BQ19DSEFfUFJJKGNoKQkoJklETUFDX1JFRy0+Y2hfcHJpW2NoIC8gMzJdKQorCisjZGVmaW5lIERJX1JFRyhkaSkJCSgoc3RydWN0IGlwdV9kaSAqKShJUFVfQ1RSTF9CQVNFX0FERFIgKyBcCisJCQkJKChkaSA9PSAxKSA/IElQVV9ESTFfUkVHX0JBU0UgOiBcCisJCQkJSVBVX0RJMF9SRUdfQkFTRSkpKQorI2RlZmluZSBESV9HRU5FUkFMKGRpKQkJKCZESV9SRUcoZGkpLT5nZW5lcmFsKQorI2RlZmluZSBESV9CU19DTEtHRU4wKGRpKQkoJkRJX1JFRyhkaSktPmJzX2Nsa2dlbjApCisjZGVmaW5lIERJX0JTX0NMS0dFTjEoZGkpCSgmRElfUkVHKGRpKS0+YnNfY2xrZ2VuMSkKKworI2RlZmluZSBESV9TV19HRU4wKGRpLCBnZW4pCSgmRElfUkVHKGRpKS0+c3dfZ2VuMFtnZW4gLSAxXSkKKyNkZWZpbmUgRElfU1dfR0VOMShkaSwgZ2VuKQkoJkRJX1JFRyhkaSktPnN3X2dlbjFbZ2VuIC0gMV0pCisjZGVmaW5lIERJX1NUUF9SRVAoZGksIGdlbikJKCZESV9SRUcoZGkpLT5zdHBfcmVwWyhnZW4gLSAxKSAvIDJdKQorI2RlZmluZSBESV9TWU5DX0FTX0dFTihkaSkJKCZESV9SRUcoZGkpLT5zeW5jX2FzKQorI2RlZmluZSBESV9EV19HRU4oZGksIGdlbikJKCZESV9SRUcoZGkpLT5kd19nZW5bZ2VuXSkKKyNkZWZpbmUgRElfRFdfU0VUKGRpLCBnZW4sIHNldCkJKCZESV9SRUcoZGkpLT5kd19zZXRbZ2VuICsgMTIgKiBzZXRdKQorI2RlZmluZSBESV9QT0woZGkpCQkoJkRJX1JFRyhkaSktPnBvbCkKKyNkZWZpbmUgRElfU0NSX0NPTkYoZGkpCQkoJkRJX1JFRyhkaSktPnNjcl9jb25mKQorCisjZGVmaW5lIERNRkNfUkVHCQkoKHN0cnVjdCBpcHVfZG1mYyAqKShJUFVfQ1RSTF9CQVNFX0FERFIgKyBcCisJCQkJSVBVX0RNRkNfUkVHX0JBU0UpKQorI2RlZmluZSBETUZDX1dSX0NIQU4JCSgmRE1GQ19SRUctPndyX2NoYW4pCisjZGVmaW5lIERNRkNfV1JfQ0hBTl9ERUYJKCZETUZDX1JFRy0+d3JfY2hhbl9kZWYpCisjZGVmaW5lIERNRkNfRFBfQ0hBTgkJKCZETUZDX1JFRy0+ZHBfY2hhbikKKyNkZWZpbmUgRE1GQ19EUF9DSEFOX0RFRgkoJkRNRkNfUkVHLT5kcF9jaGFuX2RlZikKKyNkZWZpbmUgRE1GQ19HRU5FUkFMMQkJKCZETUZDX1JFRy0+Z2VuZXJhbFswXSkKKyNkZWZpbmUgRE1GQ19JQ19DVFJMCQkoJkRNRkNfUkVHLT5pY19jdHJsKQorCisKKyNkZWZpbmUgRENfUkVHCQkJKChzdHJ1Y3QgaXB1X2RjICopKElQVV9DVFJMX0JBU0VfQUREUiArIFwKKwkJCQlJUFVfRENfUkVHX0JBU0UpKQorI2RlZmluZSBEQ19NQVBfQ09ORl9QVFIobikJKCZEQ19SRUctPmRjX21hcF9wdHJbbiAvIDJdKQorI2RlZmluZSBEQ19NQVBfQ09ORl9WQUwobikJKCZEQ19SRUctPmRjX21hcF92YWxbbiAvIDJdKQorCisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGlwdV9kY19jaCAqZGNfY2hfb2Zmc2V0KGludCBjaCkKK3sKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAwOgorCWNhc2UgMToKKwljYXNlIDI6CisJCXJldHVybiAmRENfUkVHLT5kY19jaDBfMV8yW2NoXTsKKwljYXNlIDU6CisJY2FzZSA2OgorCQlyZXR1cm4gJkRDX1JFRy0+ZGNfY2g1XzZbY2ggLSA1XTsKKwljYXNlIDg6CisJCXJldHVybiAmRENfUkVHLT5kY19jaDg7CisJY2FzZSA5OgorCQlyZXR1cm4gJkRDX1JFRy0+ZGNfY2g5OworCWRlZmF1bHQ6CisJCXByaW50ZigiJXM6IGludmFsaWQgY2hhbm5lbCAlZFxuIiwgX19mdW5jX18sIGNoKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCit9CisKKyNkZWZpbmUgRENfUkxfQ0goY2gsIGV2dCkJKCZkY19jaF9vZmZzZXQoY2gpLT5ybFtldnQgLyAyXSkKKworI2RlZmluZSBEQ19XUl9DSF9DT05GKGNoKQkoJmRjX2NoX29mZnNldChjaCktPndyX2NoX2NvbmYpCisjZGVmaW5lIERDX1dSX0NIX0FERFIoY2gpCSgmZGNfY2hfb2Zmc2V0KGNoKS0+d3JfY2hfYWRkcikKKworI2RlZmluZSBEQ19XUl9DSF9DT05GXzEJCURDX1dSX0NIX0NPTkYoMSkKKyNkZWZpbmUgRENfV1JfQ0hfQ09ORl81CQlEQ19XUl9DSF9DT05GKDUpCisKKyNkZWZpbmUgRENfR0VOCQkJKCZEQ19SRUctPmdlbikKKyNkZWZpbmUgRENfRElTUF9DT05GMihkaXNwKQkoJkRDX1JFRy0+ZGlzcF9jb25mMltkaXNwXSkKKyNkZWZpbmUgRENfU1RBVAkJCSgmRENfUkVHLT5zdGF0KQorCisjZGVmaW5lIERQX1NZTkMgMAorI2RlZmluZSBEUF9BU1lOQzAgMHg2MAorI2RlZmluZSBEUF9BU1lOQzEgMHhCQworCisjZGVmaW5lIERQX1JFRwkJCSgoc3RydWN0IGlwdV9kcCAqKShJUFVfQ1RSTF9CQVNFX0FERFIgKyBcCisJCQkJSVBVX0RQX1JFR19CQVNFKSkKKyNkZWZpbmUgRFBfQ09NX0NPTkYoZmxvdykJKCZEUF9SRUctPmNvbV9jb25mX3N5bmMpCisjZGVmaW5lIERQX0dSQVBIX1dJTkRfQ1RSTChmbG93KSAoJkRQX1JFRy0+Z3JhcGhfd2luZF9jdHJsX3N5bmMpCisjZGVmaW5lIERQX0NTQ19BXzAoZmxvdykJKCZEUF9SRUctPmNzY2Ffc3luY1swXSkKKyNkZWZpbmUgRFBfQ1NDX0FfMShmbG93KQkoJkRQX1JFRy0+Y3NjYV9zeW5jWzFdKQorI2RlZmluZSBEUF9DU0NfQV8yKGZsb3cpCSgmRFBfUkVHLT5jc2NhX3N5bmNbMl0pCisjZGVmaW5lIERQX0NTQ19BXzMoZmxvdykJKCZEUF9SRUctPmNzY2Ffc3luY1szXSkKKworI2RlZmluZSBEUF9DU0NfMChmbG93KQkJKCZEUF9SRUctPmNzY19zeW5jWzBdKQorI2RlZmluZSBEUF9DU0NfMShmbG93KQkJKCZEUF9SRUctPmNzY19zeW5jWzFdKQorCisvKiBEQyB0ZW1wbGF0ZSBvcGNvZGVzICovCisjZGVmaW5lIFdST0QobGYpCQkoMHgxOCB8IChsZiA8PCAxKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL214Y19pcHV2M19mYi5jIGIvZHJpdmVycy92aWRlby9teGNfaXB1djNfZmIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjY5ODFjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy92aWRlby9teGNfaXB1djNfZmIuYwpAQCAtMCwwICsxLDY0MiBAQAorLyoKKyAqIFBvcnRpbmcgdG8gdS1ib290OgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAxMAorICogU3RlZmFubyBCYWJpYywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgc2JhYmljQGRlbnguZGUKKyAqCisgKiBNWDUxIExpbnV4IGZyYW1lYnVmZmVyOgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNC0yMDEwIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworLyogI2RlZmluZSBERUJVRyAqLworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGFzbS9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9mYi5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPGxjZC5oPgorI2luY2x1ZGUgInZpZGVvbW9kZXMuaCIKKyNpbmNsdWRlICJpcHUuaCIKKyNpbmNsdWRlICJteGNmYi5oIgorCitERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKwordm9pZCAqbGNkX2Jhc2U7CQkJLyogU3RhcnQgb2YgZnJhbWVidWZmZXIgbWVtb3J5CSovCit2b2lkICpsY2RfY29uc29sZV9hZGRyZXNzOwkvKiBTdGFydCBvZiBjb25zb2xlIGJ1ZmZlcgkqLworCitpbnQgbGNkX2xpbmVfbGVuZ3RoOworaW50IGxjZF9jb2xvcl9mZzsKK2ludCBsY2RfY29sb3JfYmc7CisKK3Nob3J0IGNvbnNvbGVfY29sOworc2hvcnQgY29uc29sZV9yb3c7CisKK3ZpZGluZm9fdCBwYW5lbF9pbmZvOworCitzdGF0aWMgaW50IG14Y2ZiX21hcF92aWRlb19tZW1vcnkoc3RydWN0IGZiX2luZm8gKmZiaSk7CitzdGF0aWMgaW50IG14Y2ZiX3VubWFwX3ZpZGVvX21lbW9yeShzdHJ1Y3QgZmJfaW5mbyAqZmJpKTsKKwordm9pZCBsY2RfaW5pdGNvbHJlZ3Modm9pZCkKK3sKK30KKwordm9pZCBsY2Rfc2V0Y29scmVnKHVzaG9ydCByZWdubywgdXNob3J0IHJlZCwgdXNob3J0IGdyZWVuLCB1c2hvcnQgYmx1ZSkKK3sKK30KKwordm9pZCBsY2RfZGlzYWJsZSh2b2lkKQoreworfQorCit2b2lkIGxjZF9wYW5lbF9kaXNhYmxlKHZvaWQpCit7Cit9CisKK3ZvaWQgZmJfdmlkZW9tb2RlX3RvX3ZhcihzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwKKwkJCSBjb25zdCBzdHJ1Y3QgZmJfdmlkZW9tb2RlICptb2RlKQoreworCXZhci0+eHJlcyA9IG1vZGUtPnhyZXM7CisJdmFyLT55cmVzID0gbW9kZS0+eXJlczsKKwl2YXItPnhyZXNfdmlydHVhbCA9IG1vZGUtPnhyZXM7CisJdmFyLT55cmVzX3ZpcnR1YWwgPSBtb2RlLT55cmVzOworCXZhci0+eG9mZnNldCA9IDA7CisJdmFyLT55b2Zmc2V0ID0gMDsKKwl2YXItPnBpeGNsb2NrID0gbW9kZS0+cGl4Y2xvY2s7CisJdmFyLT5sZWZ0X21hcmdpbiA9IG1vZGUtPmxlZnRfbWFyZ2luOworCXZhci0+cmlnaHRfbWFyZ2luID0gbW9kZS0+cmlnaHRfbWFyZ2luOworCXZhci0+dXBwZXJfbWFyZ2luID0gbW9kZS0+dXBwZXJfbWFyZ2luOworCXZhci0+bG93ZXJfbWFyZ2luID0gbW9kZS0+bG93ZXJfbWFyZ2luOworCXZhci0+aHN5bmNfbGVuID0gbW9kZS0+aHN5bmNfbGVuOworCXZhci0+dnN5bmNfbGVuID0gbW9kZS0+dnN5bmNfbGVuOworCXZhci0+c3luYyA9IG1vZGUtPnN5bmM7CisJdmFyLT52bW9kZSA9IG1vZGUtPnZtb2RlICYgRkJfVk1PREVfTUFTSzsKK30KKworLyoKKyAqIFN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBNWEMgc3BlY2lmaWMgZnJhbWVidWZmZXIgaW5mb3JtYXRpb24uCisgKi8KK3N0cnVjdCBteGNmYl9pbmZvIHsKKwlpbnQgYmxhbms7CisJaXB1X2NoYW5uZWxfdCBpcHVfY2g7CisJaW50IGlwdV9kaTsKKwl1MzIgaXB1X2RpX3BpeF9mbXQ7CisJdW5zaWduZWQgY2hhciBvdmVybGF5OworCXVuc2lnbmVkIGNoYXIgYWxwaGFfY2hhbl9lbjsKKwlkbWFfYWRkcl90IGFscGhhX3BoeV9hZGRyMDsKKwlkbWFfYWRkcl90IGFscGhhX3BoeV9hZGRyMTsKKwl2b2lkICphbHBoYV92aXJ0X2FkZHIwOworCXZvaWQgKmFscGhhX3ZpcnRfYWRkcjE7CisJdWludDMyX3QgYWxwaGFfbWVtX2xlbjsKKwl1aW50MzJfdCBjdXJfaXB1X2J1ZjsKKwl1aW50MzJfdCBjdXJfaXB1X2FscGhhX2J1ZjsKKworCXUzMiBwc2V1ZG9fcGFsZXR0ZVsxNl07Cit9OworCitlbnVtIHsKKwlCT1RIX09OLAorCVNSQ19PTiwKKwlUR1RfT04sCisJQk9USF9PRkYKK307CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGRlZmF1bHRfYnBwID0gMTY7CitzdGF0aWMgdW5zaWduZWQgY2hhciBnX2RwX2luX3VzZTsKK3N0YXRpYyBzdHJ1Y3QgZmJfaW5mbyAqbXhjZmJfaW5mb1szXTsKK3N0YXRpYyBpbnQgZXh0X2Nsa191c2VkOworCitzdGF0aWMgdWludDMyX3QgYnBwX3RvX3BpeGZtdChzdHJ1Y3QgZmJfaW5mbyAqZmJpKQoreworCXVpbnQzMl90IHBpeGZtdCA9IDA7CisKKwlkZWJ1ZygiYnBwX3RvX3BpeGZtdDogJWRcbiIsIGZiaS0+dmFyLmJpdHNfcGVyX3BpeGVsKTsKKworCWlmIChmYmktPnZhci5ub25zdGQpCisJCXJldHVybiBmYmktPnZhci5ub25zdGQ7CisKKwlzd2l0Y2ggKGZiaS0+dmFyLmJpdHNfcGVyX3BpeGVsKSB7CisJY2FzZSAyNDoKKwkJcGl4Zm10ID0gSVBVX1BJWF9GTVRfQkdSMjQ7CisJCWJyZWFrOworCWNhc2UgMzI6CisJCXBpeGZtdCA9IElQVV9QSVhfRk1UX0JHUjMyOworCQlicmVhazsKKwljYXNlIDE2OgorCQlwaXhmbXQgPSBJUFVfUElYX0ZNVF9SR0I1NjU7CisJCWJyZWFrOworCX0KKwlyZXR1cm4gcGl4Zm10OworfQorCisvKgorICogU2V0IGZpeGVkIGZyYW1lYnVmZmVyIHBhcmFtZXRlcnMgYmFzZWQgb24gdmFyaWFibGUgc2V0dGluZ3MuCisgKgorICogQHBhcmFtICAgICAgIGluZm8gICAgIGZyYW1lYnVmZmVyIGluZm9ybWF0aW9uIHBvaW50ZXIKKyAqLworc3RhdGljIGludCBteGNmYl9zZXRfZml4KHN0cnVjdCBmYl9pbmZvICppbmZvKQoreworCXN0cnVjdCBmYl9maXhfc2NyZWVuaW5mbyAqZml4ID0gJmluZm8tPmZpeDsKKwlzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciA9ICZpbmZvLT52YXI7CisKKwlmaXgtPmxpbmVfbGVuZ3RoID0gdmFyLT54cmVzX3ZpcnR1YWwgKiB2YXItPmJpdHNfcGVyX3BpeGVsIC8gODsKKworCWZpeC0+dHlwZSA9IEZCX1RZUEVfUEFDS0VEX1BJWEVMUzsKKwlmaXgtPmFjY2VsID0gRkJfQUNDRUxfTk9ORTsKKwlmaXgtPnZpc3VhbCA9IEZCX1ZJU1VBTF9UUlVFQ09MT1I7CisJZml4LT54cGFuc3RlcCA9IDE7CisJZml4LT55cGFuc3RlcCA9IDE7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzZXR1cF9kaXNwX2NoYW5uZWwxKHN0cnVjdCBmYl9pbmZvICpmYmkpCit7CisJaXB1X2NoYW5uZWxfcGFyYW1zX3QgcGFyYW1zOworCXN0cnVjdCBteGNmYl9pbmZvICpteGNfZmJpID0gKHN0cnVjdCBteGNmYl9pbmZvICopZmJpLT5wYXI7CisKKwltZW1zZXQoJnBhcmFtcywgMCwgc2l6ZW9mKHBhcmFtcykpOworCXBhcmFtcy5tZW1fZHBfYmdfc3luYy5kaSA9IG14Y19mYmktPmlwdV9kaTsKKworCWRlYnVnKCIlcyBjYWxsZWRcbiIsIF9fZnVuY19fKTsKKwkvKgorCSAqIEFzc3VtaW5nIGludGVybGFjZWQgbWVhbnMgeXV2IG91dHB1dCwgYmVsb3cgc2V0dGluZyBhbHNvCisJICogdmFsaWQgZm9yIG1lbV9kY19zeW5jLiBGRyBzaG91bGQgaGF2ZSB0aGUgc2FtZSB2bW9kZSBhcyBCRy4KKwkgKi8KKwlpZiAoZmJpLT52YXIudm1vZGUgJiBGQl9WTU9ERV9JTlRFUkxBQ0VEKSB7CisJCXBhcmFtcy5tZW1fZHBfYmdfc3luYy5pbnRlcmxhY2VkID0gMTsKKwkJcGFyYW1zLm1lbV9kcF9iZ19zeW5jLm91dF9waXhlbF9mbXQgPQorCQkJSVBVX1BJWF9GTVRfWVVWNDQ0OworCX0gZWxzZSB7CisJCWlmIChteGNfZmJpLT5pcHVfZGlfcGl4X2ZtdCkgeworCQkJcGFyYW1zLm1lbV9kcF9iZ19zeW5jLm91dF9waXhlbF9mbXQgPQorCQkJCW14Y19mYmktPmlwdV9kaV9waXhfZm10OworCQl9IGVsc2UgeworCQkJcGFyYW1zLm1lbV9kcF9iZ19zeW5jLm91dF9waXhlbF9mbXQgPQorCQkJCUlQVV9QSVhfRk1UX1JHQjY2NjsKKwkJfQorCX0KKwlwYXJhbXMubWVtX2RwX2JnX3N5bmMuaW5fcGl4ZWxfZm10ID0gYnBwX3RvX3BpeGZtdChmYmkpOworCWlmIChteGNfZmJpLT5hbHBoYV9jaGFuX2VuKQorCQlwYXJhbXMubWVtX2RwX2JnX3N5bmMuYWxwaGFfY2hhbl9lbiA9IDE7CisKKwlpcHVfaW5pdF9jaGFubmVsKG14Y19mYmktPmlwdV9jaCwgJnBhcmFtcyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzZXR1cF9kaXNwX2NoYW5uZWwyKHN0cnVjdCBmYl9pbmZvICpmYmkpCit7CisJaW50IHJldHZhbCA9IDA7CisJc3RydWN0IG14Y2ZiX2luZm8gKm14Y19mYmkgPSAoc3RydWN0IG14Y2ZiX2luZm8gKilmYmktPnBhcjsKKworCW14Y19mYmktPmN1cl9pcHVfYnVmID0gMTsKKwlpZiAobXhjX2ZiaS0+YWxwaGFfY2hhbl9lbikKKwkJbXhjX2ZiaS0+Y3VyX2lwdV9hbHBoYV9idWYgPSAxOworCisJZmJpLT52YXIueG9mZnNldCA9IGZiaS0+dmFyLnlvZmZzZXQgPSAwOworCisJZGVidWcoIiVzOiAleCAlZCAlZCAlZCAlbHggJWx4XG4iLAorCQlfX2Z1bmNfXywKKwkJbXhjX2ZiaS0+aXB1X2NoLAorCQlmYmktPnZhci54cmVzLAorCQlmYmktPnZhci55cmVzLAorCQlmYmktPmZpeC5saW5lX2xlbmd0aCwKKwkJZmJpLT5maXguc21lbV9zdGFydCwKKwkJZmJpLT5maXguc21lbV9zdGFydCArCisJCShmYmktPmZpeC5saW5lX2xlbmd0aCAqIGZiaS0+dmFyLnlyZXMpKTsKKworCXJldHZhbCA9IGlwdV9pbml0X2NoYW5uZWxfYnVmZmVyKG14Y19mYmktPmlwdV9jaCwgSVBVX0lOUFVUX0JVRkZFUiwKKwkJCQkJIGJwcF90b19waXhmbXQoZmJpKSwKKwkJCQkJIGZiaS0+dmFyLnhyZXMsIGZiaS0+dmFyLnlyZXMsCisJCQkJCSBmYmktPmZpeC5saW5lX2xlbmd0aCwKKwkJCQkJIGZiaS0+Zml4LnNtZW1fc3RhcnQgKworCQkJCQkgKGZiaS0+Zml4LmxpbmVfbGVuZ3RoICogZmJpLT52YXIueXJlcyksCisJCQkJCSBmYmktPmZpeC5zbWVtX3N0YXJ0LAorCQkJCQkgMCwgMCk7CisJaWYgKHJldHZhbCkKKwkJcHJpbnRmKCJpcHVfaW5pdF9jaGFubmVsX2J1ZmZlciBlcnJvciAlZFxuIiwgcmV0dmFsKTsKKworCXJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBTZXQgZnJhbWVidWZmZXIgcGFyYW1ldGVycyBhbmQgY2hhbmdlIHRoZSBvcGVyYXRpbmcgbW9kZS4KKyAqCisgKiBAcGFyYW0gICAgICAgaW5mbyAgICAgZnJhbWVidWZmZXIgaW5mb3JtYXRpb24gcG9pbnRlcgorICovCitzdGF0aWMgaW50IG14Y2ZiX3NldF9wYXIoc3RydWN0IGZiX2luZm8gKmZiaSkKK3sKKwlpbnQgcmV0dmFsID0gMDsKKwl1MzIgbWVtX2xlbjsKKwlpcHVfZGlfc2lnbmFsX2NmZ190IHNpZ19jZmc7CisJc3RydWN0IG14Y2ZiX2luZm8gKm14Y19mYmkgPSAoc3RydWN0IG14Y2ZiX2luZm8gKilmYmktPnBhcjsKKwl1aW50MzJfdCBvdXRfcGl4ZWxfZm10OworCisJaXB1X2Rpc2FibGVfY2hhbm5lbChteGNfZmJpLT5pcHVfY2gpOworCWlwdV91bmluaXRfY2hhbm5lbChteGNfZmJpLT5pcHVfY2gpOworCW14Y2ZiX3NldF9maXgoZmJpKTsKKworCW1lbV9sZW4gPSBmYmktPnZhci55cmVzX3ZpcnR1YWwgKiBmYmktPmZpeC5saW5lX2xlbmd0aDsKKwlpZiAoIWZiaS0+Zml4LnNtZW1fc3RhcnQgfHwgKG1lbV9sZW4gPiBmYmktPmZpeC5zbWVtX2xlbikpIHsKKwkJaWYgKGZiaS0+Zml4LnNtZW1fc3RhcnQpCisJCQlteGNmYl91bm1hcF92aWRlb19tZW1vcnkoZmJpKTsKKworCQlpZiAobXhjZmJfbWFwX3ZpZGVvX21lbW9yeShmYmkpIDwgMCkKKwkJCXJldHVybiAtRU5PTUVNOworCX0KKworCXNldHVwX2Rpc3BfY2hhbm5lbDEoZmJpKTsKKworCW1lbXNldCgmc2lnX2NmZywgMCwgc2l6ZW9mKHNpZ19jZmcpKTsKKwlpZiAoZmJpLT52YXIudm1vZGUgJiBGQl9WTU9ERV9JTlRFUkxBQ0VEKSB7CisJCXNpZ19jZmcuaW50ZXJsYWNlZCA9IDE7CisJCW91dF9waXhlbF9mbXQgPSBJUFVfUElYX0ZNVF9ZVVY0NDQ7CisJfSBlbHNlIHsKKwkJaWYgKG14Y19mYmktPmlwdV9kaV9waXhfZm10KQorCQkJb3V0X3BpeGVsX2ZtdCA9IG14Y19mYmktPmlwdV9kaV9waXhfZm10OworCQllbHNlCisJCQlvdXRfcGl4ZWxfZm10ID0gSVBVX1BJWF9GTVRfUkdCNjY2OworCX0KKwlpZiAoZmJpLT52YXIudm1vZGUgJiBGQl9WTU9ERV9PRERfRkxEX0ZJUlNUKSAvKiBQQUwgKi8KKwkJc2lnX2NmZy5vZGRfZmllbGRfZmlyc3QgPSAxOworCWlmICgoZmJpLT52YXIuc3luYyAmIEZCX1NZTkNfRVhUKSB8fCBleHRfY2xrX3VzZWQpCisJCXNpZ19jZmcuZXh0X2NsayA9IDE7CisJaWYgKGZiaS0+dmFyLnN5bmMgJiBGQl9TWU5DX0hPUl9ISUdIX0FDVCkKKwkJc2lnX2NmZy5Ic3luY19wb2wgPSAxOworCWlmIChmYmktPnZhci5zeW5jICYgRkJfU1lOQ19WRVJUX0hJR0hfQUNUKQorCQlzaWdfY2ZnLlZzeW5jX3BvbCA9IDE7CisJaWYgKCEoZmJpLT52YXIuc3luYyAmIEZCX1NZTkNfQ0xLX0xBVF9GQUxMKSkKKwkJc2lnX2NmZy5jbGtfcG9sID0gMTsKKwlpZiAoZmJpLT52YXIuc3luYyAmIEZCX1NZTkNfREFUQV9JTlZFUlQpCisJCXNpZ19jZmcuZGF0YV9wb2wgPSAxOworCWlmICghKGZiaS0+dmFyLnN5bmMgJiBGQl9TWU5DX09FX0xPV19BQ1QpKQorCQlzaWdfY2ZnLmVuYWJsZV9wb2wgPSAxOworCWlmIChmYmktPnZhci5zeW5jICYgRkJfU1lOQ19DTEtfSURMRV9FTikKKwkJc2lnX2NmZy5jbGtpZGxlX2VuID0gMTsKKworCWRlYnVnKCJwaXhjbG9jayA9ICV1bCBIelxuIiwKKwkJKHUzMikgKFBJQ09TMktIWihmYmktPnZhci5waXhjbG9jaykgKiAxMDAwVUwpKTsKKworCWlmIChpcHVfaW5pdF9zeW5jX3BhbmVsKG14Y19mYmktPmlwdV9kaSwKKwkJCQkoUElDT1MyS0haKGZiaS0+dmFyLnBpeGNsb2NrKSkgKiAxMDAwVUwsCisJCQkJZmJpLT52YXIueHJlcywgZmJpLT52YXIueXJlcywKKwkJCQlvdXRfcGl4ZWxfZm10LAorCQkJCWZiaS0+dmFyLmxlZnRfbWFyZ2luLAorCQkJCWZiaS0+dmFyLmhzeW5jX2xlbiwKKwkJCQlmYmktPnZhci5yaWdodF9tYXJnaW4sCisJCQkJZmJpLT52YXIudXBwZXJfbWFyZ2luLAorCQkJCWZiaS0+dmFyLnZzeW5jX2xlbiwKKwkJCQlmYmktPnZhci5sb3dlcl9tYXJnaW4sCisJCQkJMCwgc2lnX2NmZykgIT0gMCkgeworCQlwdXRzKCJteGNmYjogRXJyb3IgaW5pdGlhbGl6aW5nIHBhbmVsLlxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHZhbCA9IHNldHVwX2Rpc3BfY2hhbm5lbDIoZmJpKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKG14Y19mYmktPmJsYW5rID09IEZCX0JMQU5LX1VOQkxBTkspCisJCWlwdV9lbmFibGVfY2hhbm5lbChteGNfZmJpLT5pcHVfY2gpOworCisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIENoZWNrIGZyYW1lYnVmZmVyIHZhcmlhYmxlIHBhcmFtZXRlcnMgYW5kIGFkanVzdCB0byB2YWxpZCB2YWx1ZXMuCisgKgorICogQHBhcmFtICAgICAgIHZhciAgICAgIGZyYW1lYnVmZmVyIHZhcmlhYmxlIHBhcmFtZXRlcnMKKyAqCisgKiBAcGFyYW0gICAgICAgaW5mbyAgICAgZnJhbWVidWZmZXIgaW5mb3JtYXRpb24gcG9pbnRlcgorICovCitzdGF0aWMgaW50IG14Y2ZiX2NoZWNrX3ZhcihzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwgc3RydWN0IGZiX2luZm8gKmluZm8pCit7CisJdTMyIHZ0b3RhbDsKKwl1MzIgaHRvdGFsOworCisJaWYgKHZhci0+eHJlc192aXJ0dWFsIDwgdmFyLT54cmVzKQorCQl2YXItPnhyZXNfdmlydHVhbCA9IHZhci0+eHJlczsKKwlpZiAodmFyLT55cmVzX3ZpcnR1YWwgPCB2YXItPnlyZXMpCisJCXZhci0+eXJlc192aXJ0dWFsID0gdmFyLT55cmVzOworCisJaWYgKCh2YXItPmJpdHNfcGVyX3BpeGVsICE9IDMyKSAmJiAodmFyLT5iaXRzX3Blcl9waXhlbCAhPSAyNCkgJiYKKwkgICAgKHZhci0+Yml0c19wZXJfcGl4ZWwgIT0gMTYpICYmICh2YXItPmJpdHNfcGVyX3BpeGVsICE9IDgpKQorCQl2YXItPmJpdHNfcGVyX3BpeGVsID0gZGVmYXVsdF9icHA7CisKKwlzd2l0Y2ggKHZhci0+Yml0c19wZXJfcGl4ZWwpIHsKKwljYXNlIDg6CisJCXZhci0+cmVkLmxlbmd0aCA9IDM7CisJCXZhci0+cmVkLm9mZnNldCA9IDU7CisJCXZhci0+cmVkLm1zYl9yaWdodCA9IDA7CisKKwkJdmFyLT5ncmVlbi5sZW5ndGggPSAzOworCQl2YXItPmdyZWVuLm9mZnNldCA9IDI7CisJCXZhci0+Z3JlZW4ubXNiX3JpZ2h0ID0gMDsKKworCQl2YXItPmJsdWUubGVuZ3RoID0gMjsKKwkJdmFyLT5ibHVlLm9mZnNldCA9IDA7CisJCXZhci0+Ymx1ZS5tc2JfcmlnaHQgPSAwOworCisJCXZhci0+dHJhbnNwLmxlbmd0aCA9IDA7CisJCXZhci0+dHJhbnNwLm9mZnNldCA9IDA7CisJCXZhci0+dHJhbnNwLm1zYl9yaWdodCA9IDA7CisJCWJyZWFrOworCWNhc2UgMTY6CisJCXZhci0+cmVkLmxlbmd0aCA9IDU7CisJCXZhci0+cmVkLm9mZnNldCA9IDExOworCQl2YXItPnJlZC5tc2JfcmlnaHQgPSAwOworCisJCXZhci0+Z3JlZW4ubGVuZ3RoID0gNjsKKwkJdmFyLT5ncmVlbi5vZmZzZXQgPSA1OworCQl2YXItPmdyZWVuLm1zYl9yaWdodCA9IDA7CisKKwkJdmFyLT5ibHVlLmxlbmd0aCA9IDU7CisJCXZhci0+Ymx1ZS5vZmZzZXQgPSAwOworCQl2YXItPmJsdWUubXNiX3JpZ2h0ID0gMDsKKworCQl2YXItPnRyYW5zcC5sZW5ndGggPSAwOworCQl2YXItPnRyYW5zcC5vZmZzZXQgPSAwOworCQl2YXItPnRyYW5zcC5tc2JfcmlnaHQgPSAwOworCQlicmVhazsKKwljYXNlIDI0OgorCQl2YXItPnJlZC5sZW5ndGggPSA4OworCQl2YXItPnJlZC5vZmZzZXQgPSAxNjsKKwkJdmFyLT5yZWQubXNiX3JpZ2h0ID0gMDsKKworCQl2YXItPmdyZWVuLmxlbmd0aCA9IDg7CisJCXZhci0+Z3JlZW4ub2Zmc2V0ID0gODsKKwkJdmFyLT5ncmVlbi5tc2JfcmlnaHQgPSAwOworCisJCXZhci0+Ymx1ZS5sZW5ndGggPSA4OworCQl2YXItPmJsdWUub2Zmc2V0ID0gMDsKKwkJdmFyLT5ibHVlLm1zYl9yaWdodCA9IDA7CisKKwkJdmFyLT50cmFuc3AubGVuZ3RoID0gMDsKKwkJdmFyLT50cmFuc3Aub2Zmc2V0ID0gMDsKKwkJdmFyLT50cmFuc3AubXNiX3JpZ2h0ID0gMDsKKwkJYnJlYWs7CisJY2FzZSAzMjoKKwkJdmFyLT5yZWQubGVuZ3RoID0gODsKKwkJdmFyLT5yZWQub2Zmc2V0ID0gMTY7CisJCXZhci0+cmVkLm1zYl9yaWdodCA9IDA7CisKKwkJdmFyLT5ncmVlbi5sZW5ndGggPSA4OworCQl2YXItPmdyZWVuLm9mZnNldCA9IDg7CisJCXZhci0+Z3JlZW4ubXNiX3JpZ2h0ID0gMDsKKworCQl2YXItPmJsdWUubGVuZ3RoID0gODsKKwkJdmFyLT5ibHVlLm9mZnNldCA9IDA7CisJCXZhci0+Ymx1ZS5tc2JfcmlnaHQgPSAwOworCisJCXZhci0+dHJhbnNwLmxlbmd0aCA9IDg7CisJCXZhci0+dHJhbnNwLm9mZnNldCA9IDI0OworCQl2YXItPnRyYW5zcC5tc2JfcmlnaHQgPSAwOworCQlicmVhazsKKwl9CisKKwlpZiAodmFyLT5waXhjbG9jayA8IDEwMDApIHsKKwkJaHRvdGFsID0gdmFyLT54cmVzICsgdmFyLT5yaWdodF9tYXJnaW4gKyB2YXItPmhzeW5jX2xlbiArCisJCSAgICB2YXItPmxlZnRfbWFyZ2luOworCQl2dG90YWwgPSB2YXItPnlyZXMgKyB2YXItPmxvd2VyX21hcmdpbiArIHZhci0+dnN5bmNfbGVuICsKKwkJICAgIHZhci0+dXBwZXJfbWFyZ2luOworCQl2YXItPnBpeGNsb2NrID0gKHZ0b3RhbCAqIGh0b3RhbCAqIDZVTCkgLyAxMDBVTDsKKwkJdmFyLT5waXhjbG9jayA9IEtIWjJQSUNPUyh2YXItPnBpeGNsb2NrKTsKKwkJcHJpbnRmKCJwaXhjbG9jayBzZXQgZm9yIDYwSHogcmVmcmVzaCA9ICV1IHBzXG4iLAorCQkJdmFyLT5waXhjbG9jayk7CisJfQorCisJdmFyLT5oZWlnaHQgPSAtMTsKKwl2YXItPndpZHRoID0gLTE7CisJdmFyLT5ncmF5c2NhbGUgPSAwOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbXhjZmJfbWFwX3ZpZGVvX21lbW9yeShzdHJ1Y3QgZmJfaW5mbyAqZmJpKQoreworCWlmIChmYmktPmZpeC5zbWVtX2xlbiA8IGZiaS0+dmFyLnlyZXNfdmlydHVhbCAqIGZiaS0+Zml4LmxpbmVfbGVuZ3RoKSB7CisJCWZiaS0+Zml4LnNtZW1fbGVuID0gZmJpLT52YXIueXJlc192aXJ0dWFsICoKKwkJCQkgICAgZmJpLT5maXgubGluZV9sZW5ndGg7CisJfQorCisJZmJpLT5zY3JlZW5fYmFzZSA9IChjaGFyICopbGNkX2Jhc2U7CisJZmJpLT5maXguc21lbV9zdGFydCA9ICh1bnNpZ25lZCBsb25nKWxjZF9iYXNlOworCWlmIChmYmktPnNjcmVlbl9iYXNlID09IDApIHsKKwkJcHV0cygiVW5hYmxlIHRvIGFsbG9jYXRlIGZyYW1lYnVmZmVyIG1lbW9yeVxuIik7CisJCWZiaS0+Zml4LnNtZW1fbGVuID0gMDsKKwkJZmJpLT5maXguc21lbV9zdGFydCA9IDA7CisJCXJldHVybiAtRUJVU1k7CisJfQorCisJZGVidWcoImFsbG9jYXRlZCBmYiBAIHBhZGRyPTB4JTA4WCwgc2l6ZT0lZC5cbiIsCisJCSh1aW50MzJfdCkgZmJpLT5maXguc21lbV9zdGFydCwgZmJpLT5maXguc21lbV9sZW4pOworCisJZmJpLT5zY3JlZW5fc2l6ZSA9IGZiaS0+Zml4LnNtZW1fbGVuOworCisJLyogQ2xlYXIgdGhlIHNjcmVlbiAqLworCW1lbXNldCgoY2hhciAqKWZiaS0+c2NyZWVuX2Jhc2UsIDAsIGZiaS0+Zml4LnNtZW1fbGVuKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG14Y2ZiX3VubWFwX3ZpZGVvX21lbW9yeShzdHJ1Y3QgZmJfaW5mbyAqZmJpKQoreworCWZiaS0+c2NyZWVuX2Jhc2UgPSAwOworCWZiaS0+Zml4LnNtZW1fc3RhcnQgPSAwOworCWZiaS0+Zml4LnNtZW1fbGVuID0gMDsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEluaXRpYWxpemVzIHRoZSBmcmFtZWJ1ZmZlciBpbmZvcm1hdGlvbiBwb2ludGVyLiBBZnRlciBhbGxvY2F0aW5nCisgKiBzdWZmaWNpZW50IG1lbW9yeSBmb3IgdGhlIGZyYW1lYnVmZmVyIHN0cnVjdHVyZSwgdGhlIGZpZWxkcyBhcmUKKyAqIGZpbGxlZCB3aXRoIGN1c3RvbSBpbmZvcm1hdGlvbiBwYXNzZWQgaW4gZnJvbSB0aGUgY29uZmlndXJhYmxlCisgKiBzdHJ1Y3R1cmVzLiAgVGhpcyBpbmNsdWRlcyBpbmZvcm1hdGlvbiBzdWNoIGFzIGJpdHMgcGVyIHBpeGVsLAorICogY29sb3IgbWFwcywgc2NyZWVuIHdpZHRoL2hlaWdodCBhbmQgUkdCQSBvZmZzZXRzLgorICoKKyAqIEByZXR1cm4gICAgICBGcmFtZWJ1ZmZlciBzdHJ1Y3R1cmUgaW5pdGlhbGl6ZWQgd2l0aCBvdXIgaW5mb3JtYXRpb24KKyAqLworc3RhdGljIHN0cnVjdCBmYl9pbmZvICpteGNmYl9pbml0X2ZiaW5mbyh2b2lkKQoreworI2RlZmluZSBCWVRFU19QRVJfTE9ORyA0CisjZGVmaW5lIFBBRERJTkcgKEJZVEVTX1BFUl9MT05HIC0gKHNpemVvZihzdHJ1Y3QgZmJfaW5mbykgJSBCWVRFU19QRVJfTE9ORykpCisJc3RydWN0IGZiX2luZm8gKmZiaTsKKwlzdHJ1Y3QgbXhjZmJfaW5mbyAqbXhjZmJpOworCWNoYXIgKnA7CisJaW50IHNpemUgPSBzaXplb2Yoc3RydWN0IG14Y2ZiX2luZm8pICsgUEFERElORyArCisJCXNpemVvZihzdHJ1Y3QgZmJfaW5mbyk7CisKKwlkZWJ1ZygiJXM6ICVkICVkICVkICVkXG4iLAorCQlfX2Z1bmNfXywKKwkJUEFERElORywKKwkJc2l6ZSwKKwkJc2l6ZW9mKHN0cnVjdCBteGNmYl9pbmZvKSwKKwkJc2l6ZW9mKHN0cnVjdCBmYl9pbmZvKSk7CisJLyoKKwkgKiBBbGxvY2F0ZSBzdWZmaWNpZW50IG1lbW9yeSBmb3IgdGhlIGZiIHN0cnVjdHVyZQorCSAqLworCisJcCA9IG1hbGxvYyhzaXplKTsKKwlpZiAoIXApCisJCXJldHVybiBOVUxMOworCisJbWVtc2V0KHAsIDAsIHNpemUpOworCisJZmJpID0gKHN0cnVjdCBmYl9pbmZvICopcDsKKwlmYmktPnBhciA9IHAgKyBzaXplb2Yoc3RydWN0IGZiX2luZm8pICsgUEFERElORzsKKworCW14Y2ZiaSA9IChzdHJ1Y3QgbXhjZmJfaW5mbyAqKWZiaS0+cGFyOworCWRlYnVnKCJGcmFtZWJ1ZmZlciBzdHJ1Y3R1cmVzIGF0OiBmYmk9MHgleCBteGNmYmk9MHgleFxuIiwKKwkJKHVuc2lnbmVkIGludClmYmksICh1bnNpZ25lZCBpbnQpbXhjZmJpKTsKKworCWZiaS0+dmFyLmFjdGl2YXRlID0gRkJfQUNUSVZBVEVfTk9XOworCisJZmJpLT5mbGFncyA9IEZCSU5GT19GTEFHX0RFRkFVTFQ7CisJZmJpLT5wc2V1ZG9fcGFsZXR0ZSA9IG14Y2ZiaS0+cHNldWRvX3BhbGV0dGU7CisKKwlyZXR1cm4gZmJpOworfQorCisvKgorICogUHJvYmUgcm91dGluZSBmb3IgdGhlIGZyYW1lYnVmZmVyIGRyaXZlci4gSXQgaXMgY2FsbGVkIGR1cmluZyB0aGUKKyAqIGRyaXZlciBiaW5kaW5nIHByb2Nlc3MuICAgICAgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHBlcmZvcm1lZCBpbgorICogdGhpcyByb3V0aW5lOiBGcmFtZWJ1ZmZlciBpbml0aWFsaXphdGlvbiwgTWVtb3J5IGFsbG9jYXRpb24gYW5kCisgKiBtYXBwaW5nLCBGcmFtZWJ1ZmZlciByZWdpc3RyYXRpb24sIElQVSBpbml0aWFsaXphdGlvbi4KKyAqCisgKiBAcmV0dXJuICAgICAgQXBwcm9wcmlhdGUgZXJyb3IgY29kZSB0byB0aGUga2VybmVsIGNvbW1vbiBjb2RlCisgKi8KK3N0YXRpYyBpbnQgbXhjZmJfcHJvYmUodTMyIGludGVyZmFjZV9waXhfZm10LCBzdHJ1Y3QgZmJfdmlkZW9tb2RlICptb2RlKQoreworCXN0cnVjdCBmYl9pbmZvICpmYmk7CisJc3RydWN0IG14Y2ZiX2luZm8gKm14Y2ZiaTsKKwlpbnQgcmV0ID0gMDsKKworCS8qCisJICogSW5pdGlhbGl6ZSBGQiBzdHJ1Y3R1cmVzCisJICovCisJZmJpID0gbXhjZmJfaW5pdF9mYmluZm8oKTsKKwlpZiAoIWZiaSkgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycjA7CisJfQorCW14Y2ZiaSA9IChzdHJ1Y3QgbXhjZmJfaW5mbyAqKWZiaS0+cGFyOworCisJaWYgKCFnX2RwX2luX3VzZSkgeworCQlteGNmYmktPmlwdV9jaCA9IE1FTV9CR19TWU5DOworCQlteGNmYmktPmJsYW5rID0gRkJfQkxBTktfVU5CTEFOSzsKKwl9IGVsc2UgeworCQlteGNmYmktPmlwdV9jaCA9IE1FTV9EQ19TWU5DOworCQlteGNmYmktPmJsYW5rID0gRkJfQkxBTktfUE9XRVJET1dOOworCX0KKworCW14Y2ZiaS0+aXB1X2RpID0gMDsKKworCWlwdV9kaXNwX3NldF9nbG9iYWxfYWxwaGEobXhjZmJpLT5pcHVfY2gsIDEsIDB4ODApOworCWlwdV9kaXNwX3NldF9jb2xvcl9rZXkobXhjZmJpLT5pcHVfY2gsIDAsIDApOworCXN0cmNweShmYmktPmZpeC5pZCwgIkRJU1AzIEJHIik7CisKKwlnX2RwX2luX3VzZSA9IDE7CisKKwlteGNmYl9pbmZvW214Y2ZiaS0+aXB1X2RpXSA9IGZiaTsKKworCS8qIE5lZWQgZHVtbXkgdmFsdWVzIHVudGlsIHJlYWwgcGFuZWwgaXMgY29uZmlndXJlZCAqLworCWZiaS0+dmFyLnhyZXMgPSA2NDA7CisJZmJpLT52YXIueXJlcyA9IDQ4MDsKKwlmYmktPnZhci5iaXRzX3Blcl9waXhlbCA9IDE2OworCisJbXhjZmJpLT5pcHVfZGlfcGl4X2ZtdCA9IGludGVyZmFjZV9waXhfZm10OworCWZiX3ZpZGVvbW9kZV90b192YXIoJmZiaS0+dmFyLCBtb2RlKTsKKworCW14Y2ZiX2NoZWNrX3ZhcigmZmJpLT52YXIsIGZiaSk7CisKKwkvKiBEZWZhdWx0IFkgdmlydHVhbCBzaXplIGlzIDJ4IHBhbmVsIHNpemUgKi8KKwlmYmktPnZhci55cmVzX3ZpcnR1YWwgPSBmYmktPnZhci55cmVzICogMjsKKworCW14Y2ZiX3NldF9maXgoZmJpKTsKKworCS8qIGFsb2NhdGUgZmIgZmlyc3QgKi8KKwlpZiAobXhjZmJfbWFwX3ZpZGVvX21lbW9yeShmYmkpIDwgMCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlteGNmYl9zZXRfcGFyKGZiaSk7CisKKwkvKiBTZXR0aW5nIHBhbmVsX2luZm8gZm9yIGxjZCAqLworCXBhbmVsX2luZm8uY21hcCA9IE5VTEw7CisJcGFuZWxfaW5mby52bF9jb2wgPSBmYmktPnZhci54cmVzOworCXBhbmVsX2luZm8udmxfcm93ID0gZmJpLT52YXIueXJlczsKKwlwYW5lbF9pbmZvLnZsX2JwaXggPSBMQ0RfQlBQOworCisJbGNkX2xpbmVfbGVuZ3RoID0gKHBhbmVsX2luZm8udmxfY29sICogTkJJVFMocGFuZWxfaW5mby52bF9icGl4KSkgLyA4OworCisJZGVidWcoIk1YQyBJUFVWMyBjb25maWd1cmVkXG4iCisJCSJYUkVTID0gJWQgWVJFUyA9ICVkIEJpdHNYcGl4ZWwgPSAlZFxuIiwKKwkJcGFuZWxfaW5mby52bF9jb2wsCisJCXBhbmVsX2luZm8udmxfcm93LAorCQlwYW5lbF9pbmZvLnZsX2JwaXgpOworCisJaXB1X2R1bXBfcmVnaXN0ZXJzKCk7CisKKwlyZXR1cm4gMDsKKworZXJyMDoKKwlyZXR1cm4gcmV0OworfQorCitpbnQgb3ZlcndyaXRlX2NvbnNvbGUodm9pZCkKK3sKKwkvKiBLZWVwIHN0ZG91dCAvIHN0ZGVyciBvbiBzZXJpYWwsIG91ciBMQ0QgaXMgZm9yIHNwbGFzaHNjcmVlbiBvbmx5ICovCisJcmV0dXJuIDE7Cit9CisKK3ZvaWQgbGNkX2N0cmxfaW5pdCh2b2lkICpsY2RiYXNlKQoreworCXUzMiBtZW1fbGVuID0gcGFuZWxfaW5mby52bF9jb2wgKgorCQlwYW5lbF9pbmZvLnZsX3JvdyAqCisJCU5CSVRTKHBhbmVsX2luZm8udmxfYnBpeCkgLyA4OworCisJLyoKKwkgKiBXZSByZWx5IG9uIGxjZGJhc2UgYmVpbmcgYSBwaHlzaWNhbCBhZGRyZXNzLCBpLmUuLCBlaXRoZXIgTU1VIG9mZiwKKwkgKiBvciAxLXRvLTEgbWFwcGluZy4gTWlnaHQgd2FudCB0byBhZGQgc29tZSB2aXJ0MnBoeXMgaGVyZS4KKwkgKi8KKwlpZiAoIWxjZGJhc2UpCisJCXJldHVybjsKKworCW1lbXNldChsY2RiYXNlLCAwLCBtZW1fbGVuKTsKK30KKworaW50IG14NTFfZmJfaW5pdChzdHJ1Y3QgZmJfdmlkZW9tb2RlICptb2RlKQoreworCWludCByZXQ7CisKKwlyZXQgPSBpcHVfcHJvYmUoKTsKKwlpZiAocmV0KQorCQlwdXRzKCJFcnJvciBpbml0aWFsaXppbmcgSVBVXG4iKTsKKworCWxjZF9iYXNlICs9IDU2OworCisJZGVidWcoIkZyYW1lYnVmZmVyIGF0IDB4JXhcbiIsICh1bnNpZ25lZCBpbnQpbGNkX2Jhc2UpOworCXJldCA9IG14Y2ZiX3Byb2JlKElQVV9QSVhfRk1UX1JHQjY2NiwgbW9kZSk7CisKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9teGNmYi5oIGIvZHJpdmVycy92aWRlby9teGNmYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MDgxOTYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3ZpZGVvL214Y2ZiLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIFBvcnRpbmcgdG8gdS1ib290OgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAxMAorICogU3RlZmFubyBCYWJpYywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgc2JhYmljQGRlbnguZGUKKyAqCisgKiBMaW51eCBJUFUgZHJpdmVyIGZvciBNWDUxOgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNC0yMDA5IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX01YQ0ZCX0hfXworI2RlZmluZSBfX0FTTV9BUkNIX01YQ0ZCX0hfXworCisjZGVmaW5lIEZCX1NZTkNfT0VfTE9XX0FDVAkweDgwMDAwMDAwCisjZGVmaW5lIEZCX1NZTkNfQ0xLX0xBVF9GQUxMCTB4NDAwMDAwMDAKKyNkZWZpbmUgRkJfU1lOQ19EQVRBX0lOVkVSVAkweDIwMDAwMDAwCisjZGVmaW5lIEZCX1NZTkNfQ0xLX0lETEVfRU4JMHgxMDAwMDAwMAorI2RlZmluZSBGQl9TWU5DX1NIQVJQX01PREUJMHgwODAwMDAwMAorI2RlZmluZSBGQl9TWU5DX1NXQVBfUkdCCTB4MDQwMDAwMDAKKworc3RydWN0IG14Y2ZiX2dibF9hbHBoYSB7CisJaW50IGVuYWJsZTsKKwlpbnQgYWxwaGE7Cit9OworCitzdHJ1Y3QgbXhjZmJfbG9jX2FscGhhIHsKKwlpbnQgZW5hYmxlOworCWludCBhbHBoYV9pbl9waXhlbDsKKwl1bnNpZ25lZCBsb25nIGFscGhhX3BoeV9hZGRyMDsKKwl1bnNpZ25lZCBsb25nIGFscGhhX3BoeV9hZGRyMTsKK307CisKK3N0cnVjdCBteGNmYl9jb2xvcl9rZXkgeworCWludCBlbmFibGU7CisJX191MzIgY29sb3Jfa2V5OworfTsKKworc3RydWN0IG14Y2ZiX3BvcyB7CisJX191MTYgeDsKKwlfX3UxNiB5OworfTsKKworc3RydWN0IG14Y2ZiX2dhbW1hIHsKKwlpbnQgZW5hYmxlOworCWludCBjb25zdGtbMTZdOworCWludCBzbG9wZWtbMTZdOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1vZmZzZXRzLmggYi9pbmNsdWRlL2FzbS1vZmZzZXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQzYmYxZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLW9mZnNldHMuaApAQCAtMCwwICsxLDYgQEAKKyNpZm5kZWYJRE9fREVQU19PTkxZCisKKyNpbmNsdWRlIDxnZW5lcmF0ZWQvZ2VuZXJpYy1hc20tb2Zmc2V0cy5oPgorLyogI2luY2x1ZGUgPGdlbmVyYXRlZC9hc20tb2Zmc2V0cy5oPiAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29tbW9uLmggYi9pbmNsdWRlL2NvbW1vbi5oCmluZGV4IDA2ODZhMTcuLjE4OWFkODEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29tbW9uLmgKKysrIGIvaW5jbHVkZS9jb21tb24uaApAQCAtMzUsNiArMzUsNyBAQAogdHlwZWRlZiB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyCXZ1X2NoYXI7CiAKICNpbmNsdWRlIDxjb25maWcuaD4KKyNpbmNsdWRlIDxhc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQTMwMDAuaCBiL2luY2x1ZGUvY29uZmlncy9BMzAwMC5oCmluZGV4IDI2ZDRkOGEuLjNkNjAxNDEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9BMzAwMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9BMzAwMC5oCkBAIC0xNzIsMTEgKzE3Miw5IEBACiAgKi8KIAogLyogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQkgICBDT05GSUdfU1lTX1RFWFRfQkFTRSAqLwotLyojZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAyNTYqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAxMjgKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICAgICAweDQwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EICAgICAgMHgxMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAgICAgIDB4MTAwMAorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQURDSU9QLmggYi9pbmNsdWRlL2NvbmZpZ3MvQURDSU9QLmgKaW5kZXggNTYxMDkxNC4uNmYxMmM4ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0FEQ0lPUC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9BRENJT1AuaApAQCAtMTE0LDkgKzExNCw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDAwZGYwMDAwIC8qIGluc2lkZSBvZiBTRFJBTQkJCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MGYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgwZjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9BTVg4NjAuaCBiL2luY2x1ZGUvY29uZmlncy9BTVg4NjAuaAppbmRleCBhYTM1Y2JjLi5lN2M2Zjk2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQU1YODYwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0FNWDg2MC5oCkBAIC0xMzgsOSArMTM4LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9BUDEwMDAuaCBiL2luY2x1ZGUvY29uZmlncy9BUDEwMDAuaAppbmRleCBmMWFlMTZjLi45ZTU0OTBkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQVAxMDAwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0FQMTAwMC5oCkBAIC0yMDksOSArMjA5LDggQEAKICAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQwMDAwMCAgLyogaW5zaWRlIG9mIFNEUkFNCQkJICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MjAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9BUEM0MDUuaCBiL2luY2x1ZGUvY29uZmlncy9BUEM0MDUuaAppbmRleCBiODQ2YWZjLi4wYWRmM2VkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQVBDNDA1LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0FQQzQwNS5oCkBAIC00MjAsOSArNDIwLDggQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIgLyogaW5zaWRlIG9mIFNEUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4IC8qIHJlc2VydmVkIGJ5dGVzIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAvKiByZXNlcnZlIHNvbWUgbWVtb3J5IGZvciBCT09UIGxpbWl0IGluZm8gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAkoQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgLSAxNikKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0FSNDA1LmggYi9pbmNsdWRlL2NvbmZpZ3MvQVI0MDUuaAppbmRleCBiNGZmNzE4Li40OTYzZTlmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQVI0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQVI0MDUuaApAQCAtMjY2LDkgKzI2Niw4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9EQ0FDSEVfQ1MJNwkvKiB1c2UgY3MgIyA3IGZvciBkYXRhIGNhY2hlIG1lbW9yeSAgICAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQwMDAwMDAwICAvKiB1c2UgZGF0YSBjYWNoZQkJICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MjAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQVNINDA1LmggYi9pbmNsdWRlL2NvbmZpZ3MvQVNINDA1LmgKaW5kZXggNDgwMDUxYi4uZWU4MGQ5ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0FTSDQwNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9BU0g0MDUuaApAQCAtMzI0LDEwICszMjQsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX0FERFIJMHhGODAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJMHgxMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIgLyogaW5zaWRlIG9mIFNEUkFNCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQVRVTTg1NDguaCBiL2luY2x1ZGUvY29uZmlncy9BVFVNODU0OC5oCmluZGV4IGRkYTZiYWEuLjc4NzU3ZWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9BVFVNODU0OC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9BVFVNODU0OC5oCkBAIC0xOTEsMTIgKzE5MSwxMSBAQAogLyogTWVtb3J5ICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweGU0MDEwMDAwCS8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfTDJfQUREUgkweGY4ZjgwMDAwCS8qIHJlbG9jYXRlIGJvb3QgTDJTUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KSAvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQWRkZXIuaCBiL2luY2x1ZGUvY29uZmlncy9BZGRlci5oCmluZGV4IGExYzUzMGIuLjQ4ZTZkZjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9BZGRlci5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9BZGRlci5oCkBAIC0xNzAsOSArMTcwLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAgLyogU2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9BbGFza2E4MjIwLmggYi9pbmNsdWRlL2NvbmZpZ3MvQWxhc2thODIyMC5oCmluZGV4IGI1YzkwNDkuLmUwNTA5OTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9BbGFza2E4MjIwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0FsYXNrYTgyMjAuaApAQCAtMjQ2LDEwICsyNDYsOSBAQAogCiAvKiBVc2UgU1JBTSB1bnRpbCBSQU0gd2lsbCBiZSBhdmFpbGFibGUgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCShDT05GSUdfU1lTX01CQVIgKyAweDIwMDAwKQotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDgwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg4MDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlDT05GSUdfU1lTX1RFWFRfQkFTRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0IyLmggYi9pbmNsdWRlL2NvbmZpZ3MvQjIuaAppbmRleCBjYTczNTBkLi43ODQ2YTkyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQjIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQjIuaApAQCAtNTMsNyArNTMsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMjU2ICogMTAyNCkJLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbml0b3IJKi8KICNkZWZpbmUgQ09ORklHX0VOVl9TSVpFCQkxMDI0CQkvKiAxMDI0IGJ5dGVzIG1heSBiZSB1c2VkIGZvciBlbnYgdmFycyovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0ICkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9CQUI3eHguaCBiL2luY2x1ZGUvY29uZmlncy9CQUI3eHguaAppbmRleCA5MjUwZWYzLi4xNDk3Y2FlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQkFCN3h4LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0JBQjd4eC5oCkBAIC0xOTksOSArMTk5LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAgICAgICAweDAwZmQwMDAwICAvKiBhYm92ZSB0aGUgbWVtdGVzdCByZWdpb24gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgICAgIDB4NDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAgNjQgICAgICAgICAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAgICAgICAgMHg0MDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQgICAgICBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0JDMzQ1MC5oIGIvaW5jbHVkZS9jb25maWdzL0JDMzQ1MC5oCmluZGV4IGQwNTE3MDQuLmE4MzM4OTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9CQzM0NTAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQkMzNDUwLmgKQEAgLTM4NCwxMyArMzg0LDEyIEBACiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglNUEM1WFhYX1NSQU0KICNpZmRlZiBDT05GSUdfUE9TVAogLyogcHJlc2VydmUgc3BhY2UgZm9yIHRoZSBwb3N0X3dvcmQgYXQgZW5kIG9mIG9uLWNoaXAgU1JBTSAqLwotIyBkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1BPU1RfU0laRQorIyBkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9QT1NUX1NJWkUKICNlbHNlCi0jIGRlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlNUEM1WFhYX1NSQU1fU0laRQorIyBkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9TSVpFCiAjZW5kaWYgLypDT05GSUdfUE9TVCovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBCeXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCUNPTkZJR19TWVNfVEVYVF9CQVNFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQk1XLmggYi9pbmNsdWRlL2NvbmZpZ3MvQk1XLmgKaW5kZXggN2Q5MjhlYi4uODM5OGIyOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0JNVy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9CTVcuaApAQCAtMTUwLDkgKzE1MCw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgQ09ORklHX1NZU19TRFJBTV9CQVNFICsgQ09ORklHX1NZU19NT05JVE9SX0xFTgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgIDB4MkYwMCAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgICAweDJGMDAgIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNICAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUICBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0NBTkJULmggYi9pbmNsdWRlL2NvbmZpZ3MvQ0FOQlQuaAppbmRleCA5YzU1ODA1Li5iMjdlZjY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ0FOQlQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQ0FOQlQuaApAQCAtMjIzLDkgKzIyMyw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHgwMGVmMDAwMCAvKiBpbnNpZGUgb2YgU0RSQU0JCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDBmMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MGYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JICAgICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZW5kaWYJLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0NBVGNlbnRlci5oIGIvaW5jbHVkZS9jb25maWdzL0NBVGNlbnRlci5oCmluZGV4IGFkMzZhMTQuLmFjNzBkMTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9DQVRjZW50ZXIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQ0FUY2VudGVyLmgKQEAgLTUxNCwxMCArNTE0LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSCTB4RjgwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC8qIGluc2lkZSBvZiBTRFJBTQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0NNUzcwMC5oIGIvaW5jbHVkZS9jb25maWdzL0NNUzcwMC5oCmluZGV4IDNlOTczZjIuLmRhYWY2MjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9DTVM3MDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQ01TNzAwLmgKQEAgLTI4NiwxMCArMjg2LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSCTB4RjgwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC8qIGluc2lkZSBvZiBTRFJBTQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0NQQzQ1LmggYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDNDUuaAppbmRleCA0ODZhNGUwLi42YTg4ZDI2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDNDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDNDUuaApAQCAtMTUzLDExICsxNTMsMTAgQEAKIAogLyogU2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhCiAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAvKgogICogTlMxNjU1MCBDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTJEUC5oIGIvaW5jbHVkZS9jb25maWdzL0NQQ0kyRFAuaAppbmRleCBlNGQ4ZjljLi45OWFjZTY3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTJEUC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DUENJMkRQLmgKQEAgLTI1OSw5ICsyNTksOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfRENBQ0hFX0NTCTcJLyogdXNlIGNzICMgNyBmb3IgZGF0YSBjYWNoZSBtZW1vcnkgICAgKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHg0MDAwMDAwMCAgLyogdXNlIGRhdGEgY2FjaGUJCSAgICAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDIwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNS5oIGIvaW5jbHVkZS9jb25maWdzL0NQQ0k0MDUuaAppbmRleCA2YjI5ODZkLi40MjZmYzU3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DUENJNDA1LmgKQEAgLTMzNSw5ICszMzUsOCBAQAogI2Vsc2UKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4MDBkZjAwMDAgLyogaW5zaWRlIG9mIFNEUkFNCQkJKi8KICNlbmRpZgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDIwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAgIDEyOCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MjAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JICAgICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZW5kaWYJLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0NQQ0k0MDUyLmggYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNTIuaAppbmRleCA5MDhiODcyLi44ZjQ4ZGVkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNTIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNTIuaApAQCAtMzk2LDkgKzM5Niw4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9EQ0FDSEVfQ1MJNwkvKiB1c2UgY3MgIyA3IGZvciBkYXRhIGNhY2hlIG1lbW9yeSAgICAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQwMDAwMDAwICAvKiB1c2UgZGF0YSBjYWNoZQkJICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MjAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNUFCLmggYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNUFCLmgKaW5kZXggYTJiOGQ3Mi4uYTA0MmFiZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0NQQ0k0MDVBQi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DUENJNDA1QUIuaApAQCAtMzg4LDkgKzM4OCw4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9EQ0FDSEVfQ1MJNwkvKiB1c2UgY3MgIyA3IGZvciBkYXRhIGNhY2hlIG1lbW9yeSAgICAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQwMDAwMDAwICAvKiB1c2UgZGF0YSBjYWNoZQkJICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MjAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNURULmggYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNURULmgKaW5kZXggN2ZlYTVlMy4uOWI5OWJhOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0NQQ0k0MDVEVC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DUENJNDA1RFQuaApAQCAtMzkxLDkgKzM5MSw4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9EQ0FDSEVfQ1MJNwkvKiB1c2UgY3MgIyA3IGZvciBkYXRhIGNhY2hlIG1lbW9yeSAgICAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQwMDAwMDAwICAvKiB1c2UgZGF0YSBjYWNoZQkJICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MjAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTc1MC5oIGIvaW5jbHVkZS9jb25maWdzL0NQQ0k3NTAuaAppbmRleCAzNzM0MWNiLi45MmZmYWFhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTc1MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DUENJNzUwLmgKQEAgLTI2Niw5ICsyNjYsOCBAQAogLyogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHg0MDAwMDAwMCovIC8qIHVudXNlZCBtZW1vcnkgcmVnaW9uICovCiAvKiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweGZiYTAwMDAwKi8gLyogdW51c2VkIG1lbW9yeSByZWdpb24gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4ZjEwODAwMDAgLyogdW51c2VkIG1lbW9yeSByZWdpb24gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXQgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAjZGVmaW5lIFJFTE9DQVRFX0lOVEVSTkFMX1JBTV9BRERSCiAjaWZkZWYgUkVMT0NBVEVfSU5URVJOQUxfUkFNX0FERFIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9DUENJSVNFUjQuaCBiL2luY2x1ZGUvY29uZmlncy9DUENJSVNFUjQuaAppbmRleCA1YWZmNzRjLi5iMmVlODczIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSUlTRVI0LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0NQQ0lJU0VSNC5oCkBAIC0yNDksOSArMjQ5LDggQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfRENBQ0hFX0NTCTcJLyogdXNlIGNzICMgNyBmb3IgZGF0YSBjYWNoZSBtZW1vcnkgICAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4NDAwMDAwMDAgIC8qIHVzZSBkYXRhIGNhY2hlCQkgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNCSAgICAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDIwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSAgICAgICAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9DUFU4Ni5oIGIvaW5jbHVkZS9jb25maWdzL0NQVTg2LmgKaW5kZXggMjMzZDM2Yi4uYWI2NGFkYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0NQVTg2LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0NQVTg2LmgKQEAgLTI5Niw5ICsyOTYsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMCAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4IC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMCAgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9DUFU4Ny5oIGIvaW5jbHVkZS9jb25maWdzL0NQVTg3LmgKaW5kZXggNTYwZTQ0OS4uMmIxNzE2YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0NQVTg3LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0NQVTg3LmgKQEAgLTMxMSw5ICszMTEsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjggLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ1JBWUwxLmggYi9pbmNsdWRlL2NvbmZpZ3MvQ1JBWUwxLmgKaW5kZXggNmFiYWJhMS4uODg1ZDQyYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0NSQVlMMS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DUkFZTDEuaApAQCAtMjI4LDE3ICsyMjgsMTUgQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIgLyogaW5zaWRlIG9mIFNEUkFNCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMjU2ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQgICAgICBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogI2Vsc2UKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSCTB4RjAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSCS8qIGluc2lkZSBvZiBPbiBDaGlwIFNSQU0gICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCS8qIEVuZCBvZiBPbiBDaGlwIFNSQU0JICAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRQkvKiBTaXplIG9mIE9uIENoaXAgU1JBTQkgICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9DVTgyNC5oIGIvaW5jbHVkZS9jb25maWdzL0NVODI0LmgKaW5kZXggOGUxOWFlYjMuLmE1YzJjZTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9DVTgyNC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DVTgyNC5oCkBAIC0xNDEsMTEgKzE0MSwxMCBAQAogCiAJLyogU2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhCiAJICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAxMjgKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgICAgIDB4NDAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgICAweDEwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICAgICAgMHgxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKIC8qCiAgKiBOUzE2NTUwIENvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9EQVNBX1NJTS5oIGIvaW5jbHVkZS9jb25maWdzL0RBU0FfU0lNLmgKaW5kZXggZmMyNzI3ZS4uMzcwNjA3MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0RBU0FfU0lNLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0RBU0FfU0lNLmgKQEAgLTExNSw5ICsxMTUsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHgwMGRmMDAwMCAvKiBpbnNpZGUgb2YgU0RSQU0JCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDBmMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MGYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JICAgICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvREI2NDM2MC5oIGIvaW5jbHVkZS9jb25maWdzL0RCNjQzNjAuaAppbmRleCAyNmJiNjQ5Li5kYmQyMjRjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvREI2NDM2MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9EQjY0MzYwLmgKQEAgLTM1Miw5ICszNTIsOCBAQAogKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQwMDAwMDAwIC8qIHVudXNlZCBtZW1vcnkgcmVnaW9uICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0IGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAogI2RlZmluZSBSRUxPQ0FURV9JTlRFUk5BTF9SQU1fQUREUgogI2lmZGVmIFJFTE9DQVRFX0lOVEVSTkFMX1JBTV9BRERSCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvREI2NDQ2MC5oIGIvaW5jbHVkZS9jb25maWdzL0RCNjQ0NjAuaAppbmRleCA3NDMxMmNkLi4zMjE2OTJiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvREI2NDQ2MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9EQjY0NDYwLmgKQEAgLTI5MCw5ICsyOTAsOCBAQAogKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQwMDAwMDAwIC8qIHVudXNlZCBtZW1vcnkgcmVnaW9uICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0IGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAogI2RlZmluZSBSRUxPQ0FURV9JTlRFUk5BTF9SQU1fQUREUgogI2lmZGVmIFJFTE9DQVRFX0lOVEVSTkFMX1JBTV9BRERSCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvRFA0MDUuaCBiL2luY2x1ZGUvY29uZmlncy9EUDQwNS5oCmluZGV4IGNiMTEwZTMuLmVjZGY5M2YgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9EUDQwNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9EUDQwNS5oCkBAIC0yMjgsMTAgKzIyOCw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUgkweEY4MDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfU0laRQkweDEwMDAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0RBVEFfQUREUiAvKiBpbnNpZGUgb2YgU0RSQU0JCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAgIDEyOCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9EVTQwNS5oIGIvaW5jbHVkZS9jb25maWdzL0RVNDA1LmgKaW5kZXggZDk5Yjg0MC4uMTQ5M2Y3NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0RVNDA1LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0RVNDA1LmgKQEAgLTI4Niw5ICsyODYsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJMHgxMDAwCiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0RBVEFfQUREUiAvKiBpbnNpZGUgb2YgU0RSQU0JCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZW5kaWYJLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0RVNDQwLmggYi9pbmNsdWRlL2NvbmZpZ3MvRFU0NDAuaAppbmRleCBlNmUyYjMwLi5jZWFiNjA0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvRFU0NDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvRFU0NDAuaApAQCAtNzksOSArNzksOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX09DTQkxCQkvKiBPQ00gYXMgaW5pdCByYW0JKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0JBU0UJLyogT0NNCQkJKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkoNCA8PCAxMCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTI1NgkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkoNCA8PCAxMCkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvRUIrTUNGLUVWMTIzLmggYi9pbmNsdWRlL2NvbmZpZ3MvRUIrTUNGLUVWMTIzLmgKaW5kZXggYWY1N2ZiOS4uMDMzMzkyNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0VCK01DRi1FVjEyMy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9FQitNQ0YtRVYxMjMuaApAQCAtMTUzLDEwICsxNTMsOSBAQAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4MjAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCTB4MTAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0CisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJMHgxMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAlcCi0JKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMDksOSArMjA4LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRUxJTkVfU0laRQkxNgogCiAjZGVmaW5lIElDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA4KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gOCkKICNkZWZpbmUgRENBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDQpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA0KQogI2RlZmluZSBDT05GSUdfU1lTX0lDQUNIRV9JTlYJCShDRl9DQUNSX0NJTlYgKyBDRl9DQUNSX0RDTSkKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRV9BQ1IwCQkoQ09ORklHX1NZU19TRFJBTV9CQVNFIHwgXAogCQkJCQkgQ0ZfQUREUk1BU0soQ09ORklHX1NZU19TRFJBTV9TSVpFKSB8IFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9FTFBQQy5oIGIvaW5jbHVkZS9jb25maWdzL0VMUFBDLmgKaW5kZXggN2U5NDBiOC4uOGNjZTcwYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0VMUFBDLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0VMUFBDLmgKQEAgLTE3Niw5ICsxNzYsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICAgICAgIDB4MDBmZDAwMDAgIC8qIGFib3ZlIHRoZSBtZW10ZXN0IHJlZ2lvbiAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgICAgICAgMHg0MDAwCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAgICA2NCAgICAgICAgICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0IGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICAgICAgICAweDQwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVCAgICAgIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvRUxQVDg2MC5oIGIvaW5jbHVkZS9jb25maWdzL0VMUFQ4NjAuaAppbmRleCBmMzgxNjBhLi5jNmExN2IwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvRUxQVDg2MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9FTFBUODYwLmgKQEAgLTE2OSw5ICsxNjksOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0VQODh4LmggYi9pbmNsdWRlL2NvbmZpZ3MvRVA4OHguaAppbmRleCBlYzFjYzRlYi4uYTBhY2ZkMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0VQODh4LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0VQODh4LmgKQEAgLTE3MSw5ICsxNzEsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4ICAvKiBTaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0VSSUMuaCBiL2luY2x1ZGUvY29uZmlncy9FUklDLmgKaW5kZXggNDI0NjVkYS4uOGEwZjg1MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0VSSUMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvRVJJQy5oCkBAIC0zNTIsOSArMzUyLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4MDBkZjAwMDAgIC8qIGluc2lkZSBvZiBTRFJBTQkJICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MGYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgwZjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9FU1RFRU0xOTJFLmggYi9pbmNsdWRlL2NvbmZpZ3MvRVNURUVNMTkyRS5oCmluZGV4IGQ1YTNjZDMuLjg0MWJmMTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9FU1RFRU0xOTJFLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0VTVEVFTTE5MkUuaApAQCAtMTIwLDkgKzEyMCw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9FVFgwOTQuaCBiL2luY2x1ZGUvY29uZmlncy9FVFgwOTQuaAppbmRleCBlODkwYTk3Li5jNDI3MDkzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvRVRYMDk0LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0VUWDA5NC5oCkBAIC0xMzgsOSArMTM4LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9FVkI2NDI2MC5oIGIvaW5jbHVkZS9jb25maWdzL0VWQjY0MjYwLmgKaW5kZXggZDMxMjgxMS4uM2ZkYTU1MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0VWQjY0MjYwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0VWQjY0MjYwLmgKQEAgLTE2Miw5ICsxNjIsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4NDAwMDAwMDAKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXQgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sKIAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvRVhCSVRHRU4uaCBiL2luY2x1ZGUvY29uZmlncy9FWEJJVEdFTi5oCmluZGV4IDE0ODlkMzAuLmY3YjViYzkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9FWEJJVEdFTi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9FWEJJVEdFTi5oCkBAIC0yMDAsOSArMjAwLDggQEAKIAogLyogR2xvYmFsIGluZm8gYW5kIGluaXRpYWwgc3RhY2sgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0RBVEFfQUREUiAvKiBpbnNpZGUgb2Ygb24tY2hpcCBTUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4IC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX0tHREIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvRkFEUzgyMy5oIGIvaW5jbHVkZS9jb25maWdzL0ZBRFM4MjMuaAppbmRleCA5Nzk1ODM0Li41NzMzNmY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvRkFEUzgyMy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9GQURTODIzLmgKQEAgLTE3MCw5ICsxNzAsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvRkFEUzg1MFNBUi5oIGIvaW5jbHVkZS9jb25maWdzL0ZBRFM4NTBTQVIuaAppbmRleCA5ZTJiMWE0Li40MzhkMTllIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvRkFEUzg1MFNBUi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9GQURTODUwU0FSLmgKQEAgLTExNyw5ICsxMTcsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0ZMQUdBRE0uaCBiL2luY2x1ZGUvY29uZmlncy9GTEFHQURNLmgKaW5kZXggMTIxNDRjZC4uMzM5YmI1OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0ZMQUdBRE0uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvRkxBR0FETS5oCkBAIC0xMjgsOSArMTI4LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9GUFM4NTBMLmggYi9pbmNsdWRlL2NvbmZpZ3MvRlBTODUwTC5oCmluZGV4IDFhM2QyZjguLjM4ZDkwNWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9GUFM4NTBMLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0ZQUzg1MEwuaApAQCAtMTY3LDkgKzE2Nyw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvRlBTODYwTC5oIGIvaW5jbHVkZS9jb25maWdzL0ZQUzg2MEwuaAppbmRleCAyMGU2MThmLi5jYTBiMWNjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvRlBTODYwTC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9GUFM4NjBMLmgKQEAgLTE2Nyw5ICsxNjcsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0cyMDAwLmggYi9pbmNsdWRlL2NvbmZpZ3MvRzIwMDAuaAppbmRleCAwMGYyN2NjLi5hZjYwMmZmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvRzIwMDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvRzIwMDAuaApAQCAtMzU0LDEwICszNTQsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX0FERFIJMHhGODAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJMHgxMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIgLyogaW5zaWRlIG9mIFNEUkFNCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvR0VOODYwVC5oIGIvaW5jbHVkZS9jb25maWdzL0dFTjg2MFQuaAppbmRleCA5MTVhZmYzLi42OGEwY2ZkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvR0VOODYwVC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9HRU44NjBULmgKQEAgLTM4Miw5ICszODIsOSBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JCSovCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCQkqLwogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfREFUQV9TSVpFCQk2NAkvKiAjIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19JTklUX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBDT05GSUdfU1lTX0lOSVRfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCQlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0dFTklFVFYuaCBiL2luY2x1ZGUvY29uZmlncy9HRU5JRVRWLmgKaW5kZXggZGM5MjVhZi4uYzVjYTI3OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0dFTklFVFYuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvR0VOSUVUVi5oCkBAIC0xNjEsOSArMTYxLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9ISDQwNS5oIGIvaW5jbHVkZS9jb25maWdzL0hINDA1LmgKaW5kZXggOGEzMTMyNC4uYTE1ZTY4NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0hINDA1LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0hINDA1LmgKQEAgLTQ1MCwxMCArNDUwLDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSCTB4RjgwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC8qIGluc2lkZSBvZiBTRFJBTQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQgICAgICBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvSElEREVOX0RSQUdPTi5oIGIvaW5jbHVkZS9jb25maWdzL0hJRERFTl9EUkFHT04uaAppbmRleCA2Y2IxOWM1Li5jNjg0Y2I4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvSElEREVOX0RSQUdPTi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9ISURERU5fRFJBR09OLmgKQEAgLTEyNiwyMCArMTI2LDE4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCTB4MDAwOTAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19SQU1CT09UCQkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkoQ09ORklHX1NZU19NT05JVE9SX0JBU0UgKyBDT05GSUdfU1lTX01PTklUT1JfTEVOKQotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogI2Vsc2UKICN1bmRlZglDT05GSUdfU1lTX1JBTUJPT1QKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJMHgwMDAzMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlDT05GSUdfU1lTX1RFWFRfQkFTRQogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgICAgIDB4NDAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgICAweDEwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICAgICAgMHgxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvSFVCNDA1LmggYi9pbmNsdWRlL2NvbmZpZ3MvSFVCNDA1LmgKaW5kZXggODYzMjA0ZS4uODI3ZWNmMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0hVQjQwNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9IVUI0MDUuaApAQCAtMzIzLDEwICszMjMsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX0FERFIJMHhGODAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJMHgxMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIgLyogaW5zaWRlIG9mIFNEUkFNCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvSUFEMjEwLmggYi9pbmNsdWRlL2NvbmZpZ3MvSUFEMjEwLmgKaW5kZXggNTYzMzE3Ny4uMjdiZDE0NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0lBRDIxMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9JQUQyMTAuaApAQCAtMTgzLDkgKzE4Myw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvSUNVODYyLmggYi9pbmNsdWRlL2NvbmZpZ3MvSUNVODYyLmgKaW5kZXggM2ZhNjEzMC4uYjAxMWQ1MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0lDVTg2Mi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9JQ1U4NjIuaApAQCAtMTg3LDkgKzE4Nyw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvSURTODI0Ny5oIGIvaW5jbHVkZS9jb25maWdzL0lEUzgyNDcuaAppbmRleCAxYjkwYTZiLi44NTUyMjUwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvSURTODI0Ny5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9JRFM4MjQ3LmgKQEAgLTI5Myw5ICsyOTMsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MjAwMCAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4IC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MjAwMCAgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9JUDg2MC5oIGIvaW5jbHVkZS9jb25maWdzL0lQODYwLmgKaW5kZXggZGY3ZWE5YS4uYmE4ZDYzMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0lQODYwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0lQODYwLmgKQEAgLTE1MSw5ICsxNTEsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0lQSEFTRTQ1MzkuaCBiL2luY2x1ZGUvY29uZmlncy9JUEhBU0U0NTM5LmgKaW5kZXggMjgxZDBiZC4uMGFmNDNiNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0lQSEFTRTQ1MzkuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvSVBIQVNFNDUzOS5oCkBAIC0yNDYsOSArMjQ2LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDQwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDQwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9JU1BBTi5oIGIvaW5jbHVkZS9jb25maWdzL0lTUEFOLmgKaW5kZXggZTY1MTY1OC4uNDljNjUxMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0lTUEFOLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0lTUEFOLmgKQEAgLTIzMSw5ICsyMzEsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4ICAvKiBTaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0lWTUwyNC5oIGIvaW5jbHVkZS9jb25maWdzL0lWTUwyNC5oCmluZGV4IDY0NDRiZDEuLmI4Mjc5NTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9JVk1MMjQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvSVZNTDI0LmgKQEAgLTE0NywxNSArMTQ3LDE0IEBACiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKIAogI2lmIGRlZmluZWQgKENPTkZJR19JVk1MMjRfMTZNKQotIyBkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyMgZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KICNlbGlmIGRlZmluZWQgKENPTkZJR19JVk1MMjRfMzJNKQotIyBkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgzMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyMgZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDMwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KICNlbGlmIGRlZmluZWQgKENPTkZJR19JVk1MMjRfNjRNKQotIyBkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgzMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyMgZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDMwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KICNlbmRpZgogCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9JVk1TOC5oIGIvaW5jbHVkZS9jb25maWdzL0lWTVM4LmgKaW5kZXggMWViYmM0NS4uOWIwYzMyYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0lWTVM4LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0lWTVM4LmgKQEAgLTE0MywxNSArMTQzLDE0IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgogI2lmIGRlZmluZWQgKENPTkZJR19JVk1TOF8xNk0pCi0jIGRlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworIyBkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwogI2VsaWYgZGVmaW5lZCAoQ09ORklHX0lWTVM4XzMyTSkKLSMgZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MzAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjIGRlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgzMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCiAjZWxpZiBkZWZpbmVkIChDT05GSUdfSVZNUzhfNjRNKQotIyBkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgzMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyMgZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDMwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KICNlbmRpZgogCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9JY2VDdWJlLmggYi9pbmNsdWRlL2NvbmZpZ3MvSWNlQ3ViZS5oCmluZGV4IGY1NGEzOTMuLmJjNWQ3NjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9JY2VDdWJlLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0ljZUN1YmUuaApAQCAtMjc1LDExICsyNzUsMTAgQEAKIAogLyogVXNlIFNSQU0gdW50aWwgUkFNIHdpbGwgYmUgYXZhaWxhYmxlICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglNUEM1WFhYX1NSQU0KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1NJWkUJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJTVBDNVhYWF9TUkFNX1NJWkUJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KIAogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UgICAgQ09ORklHX1NZU19URVhUX0JBU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9KU0UuaCBiL2luY2x1ZGUvY29uZmlncy9KU0UuaAppbmRleCAyYTFjYzU4Li5jMzhlMGQyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvSlNFLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0pTRS5oCkBAIC01OSwxMCArNTksOSBAQAogICAvKiAuLi4gcGxhY2UgSU5JVCBSQU0gaW4gdGhlIE9DTSBhZGRyZXNzICovCiAjIGRlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSCiAgIC8qIC4uLiBnaXZlIGl0IHRoZSB3aG9sZSBpbml0IHJhbSAqLwotIyBkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCisjIGRlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCiAgIC8qIC4uLiBTaGF2ZSBhIGJpdCBvZmYgdGhlIGVuZCBmb3IgZ2xvYmFsIGRhdGEgKi8KLSMgZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKLSMgZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyMgZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICAgLyogLi4uIGFuZCBwbGFjZSB0aGUgc3RhY2sgcG9pbnRlciBhdCB0aGUgdG9wIG9mIHdoYXQncyBsZWZ0LiAqLwogIyBkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvS0FSRUYuaCBiL2luY2x1ZGUvY29uZmlncy9LQVJFRi5oCmluZGV4IDQ2YjkxNzUuLmZjZjY2YjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9LQVJFRi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9LQVJFRi5oCkBAIC04MCwxMCArODAsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX1RFTVBfU1RBQ0tfT0NNICAgIDEKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSICAgICBDT05GSUdfU1lTX0lTUkFNX0JBU0UKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICAgICBDT05GSUdfU1lTX0lTUkFNX0JBU0UgLyogSW5pdGlhbCBSQU0gYWRkcmVzcwkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgICAgIDB4MjAwMAkgICAgIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAgMTI4CSAgICAgLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YQkqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgICAgICAweDIwMDAJICAgICAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQgICAgKENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIC0gMHg0KQogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JICAgICAgKDI1NiAqIDEwMjQpICAgLyogUnNydiAyNTZrQiBmb3IgTW9uCSovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvS1VQNEsuaCBiL2luY2x1ZGUvY29uZmlncy9LVVA0Sy5oCmluZGV4IDk3MDJkNjMuLmMwMDM1ZTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9LVVA0Sy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9LVVA0Sy5oCkBAIC0xMzksOSArMTM5LDkgQEAKIAogLyogTGlzdCBvZiBJMkMgYWRkcmVzc2VzIHRvIGJlIHZlcmlmaWVkIGJ5IFBPU1QgKi8KIAotI2RlZmluZSBJMkNfQUREUl9MSVNUCXtDT05GSUdfU1lTX0kyQ19QSUNJT19BRERSLAlcCi0JCQlDT05GSUdfU1lTX0kyQ19SVENfQUREUiwJXAotCQkJfQorI2RlZmluZSBDT05GSUdfU1lTX1BPU1RfSTJDX0FERFJTCXtDT05GSUdfU1lTX0kyQ19QSUNJT19BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19SVENfQUREUiwJXAorCQkJCQl9CiAKICNkZWZpbmUgQ09ORklHX1JUQ19QQ0Y4NTYzCQkvKiB1c2UgUGhpbGlwcyBQQ0Y4NTYzIFJUQwkqLwogCkBAIC0yMTEsOSArMjExLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9LVVA0WC5oIGIvaW5jbHVkZS9jb25maWdzL0tVUDRYLmgKaW5kZXggOTYxM2VkOS4uNTA4NGNjYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0tVUDRYLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0tVUDRYLmgKQEAgLTE0OSw5ICsxNDksOSBAQAogCiAvKiBMaXN0IG9mIEkyQyBhZGRyZXNzZXMgdG8gYmUgdmVyaWZpZWQgYnkgUE9TVCAqLwogCi0jZGVmaW5lIEkyQ19BRERSX0xJU1QJe0NPTkZJR19TWVNfSTJDX1BJQ0lPX0FERFIsCVwKLQkJCUNPTkZJR19TWVNfSTJDX1JUQ19BRERSLAlcCi0JCQl9CisjZGVmaW5lIENPTkZJR19TWVNfUE9TVF9JMkNfQUREUlMJe0NPTkZJR19TWVNfSTJDX1BJQ0lPX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1JUQ19BRERSLAlcCisJCQkJCX0KIAogCiAjZGVmaW5lIENPTkZJR19SVENfUENGODU2MwkJLyogdXNlIFBoaWxpcHMgUENGODU2MyBSVEMJKi8KQEAgLTIyNyw5ICsyMjcsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTEFOVEVDLmggYi9pbmNsdWRlL2NvbmZpZ3MvTEFOVEVDLmgKaW5kZXggN2M1OGY2OC4uMGY0ZWE0MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0xBTlRFQy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9MQU5URUMuaApAQCAtMTU1LDkgKzE1NSw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTTUyMDhFVkJFLmggYi9pbmNsdWRlL2NvbmZpZ3MvTTUyMDhFVkJFLmgKaW5kZXggZTY2MzJhYy4uYTQ1Y2RjMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL001MjA4RVZCRS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NNTIwOEVWQkUuaApAQCAtMTQ2LDEwICsxNDYsOSBAQAogICovCiAvKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHg4MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJMHg0MDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJCTB4NDAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBpbnRlcm5hbCBTUkFNICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQ1RSTAkweDIyMQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKSAtIDB4MTApCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCSgoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpIC0gMHgxMCkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKgpAQCAtMjA4LDkgKzIwNyw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVMSU5FX1NJWkUJMTYKIAogI2RlZmluZSBJQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gOCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDgpCiAjZGVmaW5lIERDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA0KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gNCkKICNkZWZpbmUgQ09ORklHX1NZU19JQ0FDSEVfSU5WCQkoQ0ZfQ0FDUl9DSU5WIHwgQ0ZfQ0FDUl9JTlZJKQogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFX0FDUjAJCShDT05GSUdfU1lTX1NEUkFNX0JBU0UgfCBcCiAJCQkJCSBDRl9BRERSTUFTSyhDT05GSUdfU1lTX1NEUkFNX1NJWkUpIHwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL001MjI3N0VWQi5oIGIvaW5jbHVkZS9jb25maWdzL001MjI3N0VWQi5oCmluZGV4IDg4N2JkNjMuLmJiM2I0NzQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NNTIyNzdFVkIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTTUyMjc3RVZCLmgKQEAgLTIwNywxMiArMjA3LDExIEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDgwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECQkweDgwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBpbnRlcm5hbCBTUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJMHg4MDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9DVFJMCTB4MjIxCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCSgoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpIC0gMzIpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCSgoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpIC0gMzIpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJKENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIC0gMzIpCi0jZGVmaW5lIENPTkZJR19TWVNfU0JGSERSX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDMyKQorI2RlZmluZSBDT05GSUdfU1lTX1NCRkhEUl9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gMzIpCiAKIC8qCiAgKiBTdGFydCBhZGRyZXNzZXMgZm9yIHRoZSBmaW5hbCBtZW1vcnkgY29uZmlndXJhdGlvbgpAQCAtMzAzLDkgKzMwMiw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVMSU5FX1NJWkUJMTYKIAogI2RlZmluZSBJQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gOCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDgpCiAjZGVmaW5lIERDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA0KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gNCkKICNkZWZpbmUgQ09ORklHX1NZU19JQ0FDSEVfSU5WCQkoQ0ZfQ0FDUl9DSU5WIHwgQ0ZfQ0FDUl9JTlZJKQogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFX0FDUjAJCShDT05GSUdfU1lTX1NEUkFNX0JBU0UgfCBcCiAJCQkJCSBDRl9BRERSTUFTSyhDT05GSUdfU1lTX1NEUkFNX1NJWkUpIHwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL001MjM1RVZCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTTUyMzVFVkIuaAppbmRleCA1YzBkYzg0Li5jZDEyZDJiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTTUyMzVFVkIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTTUyMzVFVkIuaApAQCAtMTY3LDEwICsxNjcsOSBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHgyMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBpbnRlcm5hbCBTUkFNICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQ1RSTAkweDIxCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAtIDB4MTApCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSAtIDB4MTApCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjM4LDkgKzIzNyw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVMSU5FX1NJWkUJMTYKIAogI2RlZmluZSBJQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gOCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDgpCiAjZGVmaW5lIERDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA0KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gNCkKICNkZWZpbmUgQ09ORklHX1NZU19JQ0FDSEVfSU5WCQkoQ0ZfQ0FDUl9DSU5WKQogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFX0FDUjAJCShDT05GSUdfU1lTX1NEUkFNX0JBU0UgfCBcCiAJCQkJCSBDRl9BRERSTUFTSyhDT05GSUdfU1lTX1NEUkFNX1NJWkUpIHwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL001MjQ5RVZCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTTUyNDlFVkIuaAppbmRleCAzM2FjMjg1Li4xMDRmY2RlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTTUyNDlFVkIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTTUyNDlFVkIuaApAQCAtMTA5LDkgKzEwOSw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDIwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0JKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfRU5WX0lTX0lOX0ZMQVNICTEKQEAgLTE2Nyw5ICsxNjYsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFTElORV9TSVpFCTE2CiAKICNkZWZpbmUgSUNBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDgpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA4KQogI2RlZmluZSBEQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gNCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDQpCiAjZGVmaW5lIENPTkZJR19TWVNfSUNBQ0hFX0lOVgkJKENGX0NBQ1JfRENNKQogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFX0FDUjAJCShDT05GSUdfU1lTX0ZMQVNIX0JBU0UgfCBcCiAJCQkJCSBDRl9BRERSTUFTSygyKSB8IFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NNTI1M0RFTU8uaCBiL2luY2x1ZGUvY29uZmlncy9NNTI1M0RFTU8uaAppbmRleCBiNWFmNDkzLi5mMmYzMTU5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTTUyNTNERU1PLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL001MjUzREVNTy5oCkBAIC0xNjcsOSArMTY3LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4MjAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBpbnRlcm5hbCBTUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKgpAQCAtMjI4LDkgKzIyNyw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVMSU5FX1NJWkUJMTYKIAogI2RlZmluZSBJQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gOCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDgpCiAjZGVmaW5lIERDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA0KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gNCkKICNkZWZpbmUgQ09ORklHX1NZU19JQ0FDSEVfSU5WCQkoQ0ZfQ0FDUl9EQ00pCiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVfQUNSMAkJKENPTkZJR19TWVNfRkxBU0hfQkFTRSB8IFwKIAkJCQkJIENGX0FERFJNQVNLKDgpIHwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL001MjUzRVZCRS5oIGIvaW5jbHVkZS9jb25maWdzL001MjUzRVZCRS5oCmluZGV4IDIwNmQxMTUuLmRkOGE1NjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NNTI1M0VWQkUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTTUyNTNFVkJFLmgKQEAgLTEzNSw5ICsxMzUsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHgyMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qCkBAIC0xODEsOSArMTgwLDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRUxJTkVfU0laRQkxNgogCiAjZGVmaW5lIElDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA4KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gOCkKICNkZWZpbmUgRENBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDQpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA0KQogI2RlZmluZSBDT05GSUdfU1lTX0lDQUNIRV9JTlYJCShDRl9DQUNSX0RDTSkKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRV9BQ1IwCQkoQ09ORklHX1NZU19GTEFTSF9CQVNFIHwgXAogCQkJCQkgQ0ZfQUREUk1BU0soMikgfCBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTTUyNzFFVkIuaCBiL2luY2x1ZGUvY29uZmlncy9NNTI3MUVWQi5oCmluZGV4IDc5ODk0OWMuLjk5MmQ3MzggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NNTI3MUVWQi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NNTI3MUVWQi5oCkBAIC0xODcsOSArMTg3LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4MjAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTSAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBpbnRlcm5hbCBTUkFNICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKgpAQCAtMjMxLDkgKzIzMCw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVMSU5FX1NJWkUJMTYKIAogI2RlZmluZSBJQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gOCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDgpCiAjZGVmaW5lIERDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA0KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gNCkKICNkZWZpbmUgQ09ORklHX1NZU19JQ0FDSEVfSU5WCQkoQ0ZfQ0FDUl9DSU5WIHwgQ0ZfQ0FDUl9JTlZJKQogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFX0FDUjAJCShDT05GSUdfU1lTX1NEUkFNX0JBU0UgfCBcCiAJCQkJCSBDRl9BRERSTUFTSyhDT05GSUdfU1lTX1NEUkFNX1NJWkUpIHwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL001MjcyQzMuaCBiL2luY2x1ZGUvY29uZmlncy9NNTI3MkMzLmgKaW5kZXggZjcwNGJiMy4uYjNjNzc0ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL001MjcyQzMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTTUyNzJDMy5oCkBAIC0xNjMsOSArMTYzLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4MjAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTSAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBpbnRlcm5hbCBTUkFNICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMTMsOSArMjEyLDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRUxJTkVfU0laRQkxNgogCiAjZGVmaW5lIElDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA4KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gOCkKICNkZWZpbmUgRENBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDQpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA0KQogI2RlZmluZSBDT05GSUdfU1lTX0lDQUNIRV9JTlYJCShDRl9DQUNSX0NJTlYgfCBDRl9DQUNSX0lOVkkpCiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVfQUNSMAkJKENPTkZJR19TWVNfU0RSQU1fQkFTRSB8IFwKIAkJCQkJIENGX0FERFJNQVNLKENPTkZJR19TWVNfU0RSQU1fU0laRSkgfCBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTTUyNzVFVkIuaCBiL2luY2x1ZGUvY29uZmlncy9NNTI3NUVWQi5oCmluZGV4IDk4MTY3MGEuLjU2YTc2MGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NNTI3NUVWQi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NNTI3NUVWQi5oCkBAIC0xNzMsOSArMTczLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4MjAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEwMDAJLyogYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIyMiw5ICsyMjEsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFTElORV9TSVpFCTE2CiAKICNkZWZpbmUgSUNBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDgpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA4KQogI2RlZmluZSBEQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gNCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDQpCiAjZGVmaW5lIENPTkZJR19TWVNfSUNBQ0hFX0lOVgkJKENGX0NBQ1JfQ0lOViB8IENGX0NBQ1JfSU5WSSkKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRV9BQ1IwCQkoQ09ORklHX1NZU19TRFJBTV9CQVNFIHwgXAogCQkJCQkgQ0ZfQUREUk1BU0soQ09ORklHX1NZU19TRFJBTV9TSVpFKSB8IFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NNTI4MkVWQi5oIGIvaW5jbHVkZS9jb25maWdzL001MjgyRVZCLmgKaW5kZXggNDZmNjBiZi4uMGMxMDQ4MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL001MjgyRVZCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL001MjgyRVZCLmgKQEAgLTE1NCw5ICsxNTQsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHgyMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTSAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTSAgICAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjExLDkgKzIxMCw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVMSU5FX1NJWkUJMTYKIAogI2RlZmluZSBJQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gOCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDgpCiAjZGVmaW5lIERDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA0KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gNCkKICNkZWZpbmUgQ09ORklHX1NZU19JQ0FDSEVfSU5WCQkoQ0ZfQ0FDUl9DSU5WICsgQ0ZfQ0FDUl9EQ00pCiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVfQUNSMAkJKENPTkZJR19TWVNfU0RSQU1fQkFTRSB8IFwKIAkJCQkJIENGX0FERFJNQVNLKENPTkZJR19TWVNfU0RSQU1fU0laRSkgfCBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTTUzMDE3RVZCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTTUzMDE3RVZCLmgKaW5kZXggZDk4M2E4Zi4uZDIwNWU3YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL001MzAxN0VWQi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NNTMwMTdFVkIuaApAQCAtMTY3LDEwICsxNjcsOSBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHg4MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJMHgyMDAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCQkweDIwMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9DVFJMCTB4MjIxCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCSgoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpIC0gMHgxMCkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkgLSAweDEwKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qCkBAIC0yMzQsOSArMjMzLDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRUxJTkVfU0laRQkxNgogCiAjZGVmaW5lIElDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA4KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gOCkKICNkZWZpbmUgRENBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDQpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA0KQogI2RlZmluZSBDT05GSUdfU1lTX0lDQUNIRV9JTlYJCShDRl9DQUNSX0NJTlZBKQogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFX0FDUjAJCShDT05GSUdfU1lTX1NEUkFNX0JBU0UgfCBcCiAJCQkJCSBDRl9BRERSTUFTSyhDT05GSUdfU1lTX1NEUkFNX1NJWkUpIHwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL001MzI5RVZCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTTUzMjlFVkIuaAppbmRleCAxNTliMTc4Li43YWUwZmFkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTTUzMjlFVkIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTTUzMjlFVkIuaApAQCAtMTYyLDEwICsxNjIsOSBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHg4MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDgwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBpbnRlcm5hbCBTUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDgwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0NUUkwJMHgyMjEKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkgLSAweDEwKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKSAtIDB4MTApCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjM4LDkgKzIzNyw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVMSU5FX1NJWkUJMTYKIAogI2RlZmluZSBJQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gOCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDgpCiAjZGVmaW5lIERDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA0KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gNCkKICNkZWZpbmUgQ09ORklHX1NZU19JQ0FDSEVfSU5WCQkoQ0ZfQ0FDUl9DSU5WQSkKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRV9BQ1IwCQkoQ09ORklHX1NZU19TRFJBTV9CQVNFIHwgXAogCQkJCQkgQ0ZfQUREUk1BU0soQ09ORklHX1NZU19TRFJBTV9TSVpFKSB8IFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NNTM3M0VWQi5oIGIvaW5jbHVkZS9jb25maWdzL001MzczRVZCLmgKaW5kZXggYWYxOTg4Yy4uNzA4NmExYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL001MzczRVZCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL001MzczRVZCLmgKQEAgLTE2MiwxMCArMTYyLDkgQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4ODAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg4MDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg4MDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9DVFJMCTB4MjIxCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCSgoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpIC0gMHgxMCkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkgLSAweDEwKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIzOCw5ICsyMzcsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFTElORV9TSVpFCTE2CiAKICNkZWZpbmUgSUNBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDgpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA4KQogI2RlZmluZSBEQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gNCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDQpCiAjZGVmaW5lIENPTkZJR19TWVNfSUNBQ0hFX0lOVgkJKENGX0NBQ1JfQ0lOVkEpCiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVfQUNSMAkJKENPTkZJR19TWVNfU0RSQU1fQkFTRSB8IFwKIAkJCQkJIENGX0FERFJNQVNLKENPTkZJR19TWVNfU0RSQU1fU0laRSkgfCBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTTU0NDUxRVZCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTTU0NDUxRVZCLmgKaW5kZXggMWZmODBlZS4uMzc3MTVjNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL001NDQ1MUVWQi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NNTQ0NTFFVkIuaApAQCAtMjIwLDEyICsyMjAsMTEgQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4ODAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg4MDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg4MDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9DVFJMCTB4MjIxCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCSgoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpIC0gMzIpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCSgoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpIC0gMzIpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKLSNkZWZpbmUgQ09ORklHX1NZU19TQkZIRFJfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gMzIpCisjZGVmaW5lIENPTkZJR19TWVNfU0JGSERSX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSAzMikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU3RhcnQgYWRkcmVzc2VzIGZvciB0aGUgZmluYWwgbWVtb3J5IGNvbmZpZ3VyYXRpb24KQEAgLTMxMCw5ICszMDksOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFTElORV9TSVpFCQkxNgogCiAjZGVmaW5lIElDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA4KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gOCkKICNkZWZpbmUgRENBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDQpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA0KQogI2RlZmluZSBDT05GSUdfU1lTX0lDQUNIRV9JTlYJCShDRl9DQUNSX0JDSU5WQSArIENGX0NBQ1JfSUNJTlZBKQogI2RlZmluZSBDT05GSUdfU1lTX0RDQUNIRV9JTlYJCShDRl9DQUNSX0RDSU5WQSkKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRV9BQ1IyCQkoQ09ORklHX1NZU19TRFJBTV9CQVNFIHwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL001NDQ1NUVWQi5oIGIvaW5jbHVkZS9jb25maWdzL001NDQ1NUVWQi5oCmluZGV4IDFjZGMzNzMuLjg2ZmFhM2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NNTQ0NTVFVkIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTTU0NDU1RVZCLmgKQEAgLTI3OSwxMiArMjc5LDExIEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDgwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECQkweDgwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBpbnRlcm5hbCBTUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJMHg4MDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9DVFJMCTB4MjIxCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCSgoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpIC0gMzIpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCSgoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpIC0gMzIpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKLSNkZWZpbmUgQ09ORklHX1NZU19TQkZIRFJfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gMzIpCisjZGVmaW5lIENPTkZJR19TWVNfU0JGSERSX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSAzMikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU3RhcnQgYWRkcmVzc2VzIGZvciB0aGUgZmluYWwgbWVtb3J5IGNvbmZpZ3VyYXRpb24KQEAgLTQwOSw5ICs0MDgsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFTElORV9TSVpFCQkxNgogCiAjZGVmaW5lIElDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA4KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gOCkKICNkZWZpbmUgRENBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDQpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA0KQogI2RlZmluZSBDT05GSUdfU1lTX0lDQUNIRV9JTlYJCShDRl9DQUNSX0JDSU5WQSArIENGX0NBQ1JfSUNJTlZBKQogI2RlZmluZSBDT05GSUdfU1lTX0RDQUNIRV9JTlYJCShDRl9DQUNSX0RDSU5WQSkKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRV9BQ1IyCQkoQ09ORklHX1NZU19TRFJBTV9CQVNFIHwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL001NDc1RVZCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTTU0NzVFVkIuaAppbmRleCBkMDA3NzY2Li41ZjZlYjU1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTTU0NzVFVkIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTTU0NzVFVkIuaApAQCAtMjEwLDEzICsyMTAsMTIgQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4RjIwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9DVFJMCTB4MjEKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTTFfQUREUgkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgQ09ORklHX1NZU19JTklUX1JBTV9FTkQpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU0xX0FERFIJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTTFfRU5ECTB4MTAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTTFfQ1RSTAkweDIxCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCSgoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpIC0gMHgxMCkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkgLSAweDEwKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI4Nyw5ICsyODYsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFTElORV9TSVpFCTE2CiAKICNkZWZpbmUgSUNBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDgpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA4KQogI2RlZmluZSBEQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gNCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDQpCiAjZGVmaW5lIENPTkZJR19TWVNfSUNBQ0hFX0lOVgkJKENGX0NBQ1JfQkNJTlZBICsgQ0ZfQ0FDUl9JQ0lOVkEgKyBcCiAJCQkJCSBDRl9DQUNSX0lEQ00pCiAjZGVmaW5lIENPTkZJR19TWVNfRENBQ0hFX0lOVgkJKENGX0NBQ1JfRENJTlZBKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL001NDg1RVZCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTTU0ODVFVkIuaAppbmRleCBmMjNiOGIwLi5lMTc4ZTM1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTTU0ODVFVkIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTTU0ODVFVkIuaApAQCAtMTk2LDEzICsxOTYsMTIgQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4RjIwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9DVFJMCTB4MjEKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTTFfQUREUgkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgQ09ORklHX1NZU19JTklUX1JBTV9FTkQpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU0xX0FERFIJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTTFfRU5ECTB4MTAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTTFfQ1RSTAkweDIxCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCSgoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpIC0gMHgxMCkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkgLSAweDEwKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI3Myw5ICsyNzIsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFTElORV9TSVpFCTE2CiAKICNkZWZpbmUgSUNBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDgpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA4KQogI2RlZmluZSBEQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gNCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDQpCiAjZGVmaW5lIENPTkZJR19TWVNfSUNBQ0hFX0lOVgkJKENGX0NBQ1JfQkNJTlZBICsgQ0ZfQ0FDUl9JQ0lOVkEgKyBcCiAJCQkJCSBDRl9DQUNSX0lEQ00pCiAjZGVmaW5lIENPTkZJR19TWVNfRENBQ0hFX0lOVgkJKENGX0NBQ1JfRENJTlZBKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01CWC5oIGIvaW5jbHVkZS9jb25maWdzL01CWC5oCmluZGV4IDNiNGQ2MGMuLmNiNWIwMjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NQlguaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTUJYLmgKQEAgLTE0NCw5ICsxNDQsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MmYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MmYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9WUERfU0laRQkyNTYgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgdnBkIGJ1ZmZlciAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfVlBEX09GRlNFVAkoQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgLSBDT05GSUdfU1lTX0lOSVRfVlBEX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9WUERfT0ZGU0VULTgpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTUJYODYwVC5oIGIvaW5jbHVkZS9jb25maWdzL01CWDg2MFQuaAppbmRleCA2OTY0YmVjLi45NjliYTdlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTUJYODYwVC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NQlg4NjBULmgKQEAgLTk4LDkgKzk4LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJmMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJmMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfVlBEX1NJWkUJMjU2IC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIHZwZCBidWZmZXIgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1ZQRF9PRkZTRVQJKENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIC0gQ09ORklHX1NZU19JTklUX1ZQRF9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfVlBEX09GRlNFVC04KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01FVFJPQk9YLmggYi9pbmNsdWRlL2NvbmZpZ3MvTUVUUk9CT1guaAppbmRleCBkNzliNzAyLi45YjgzZTIxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTUVUUk9CT1guaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTUVUUk9CT1guaApAQCAtMTQyLDEwICsxNDIsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX1RFTVBfU1RBQ0tfT0NNICAgIDEKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSICAgICBDT05GSUdfU1lTX0lTUkFNX0JBU0UKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICAgICBDT05GSUdfU1lTX0lTUkFNX0JBU0UgLyogSW5pdGlhbCBSQU0gYWRkcmVzcwkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgICAgIDB4MjAwMAkgICAgIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAgMTI4CSAgICAgLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YQkqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgICAgICAweDIwMDAJICAgICAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQgICAgKENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIC0gMHg0KQogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JICAgICAgKDI1NiAqIDEwMjQpICAgLyogUnNydiAyNTZrQiBmb3IgTW9uCSovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTUhQQy5oIGIvaW5jbHVkZS9jb25maWdzL01IUEMuaAppbmRleCA2YWQwNjU4Li5iOWMxNjM4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTUhQQy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NSFBDLmgKQEAgLTE3OSw5ICsxNzksOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01JUDQwNS5oIGIvaW5jbHVkZS9jb25maWdzL01JUDQwNS5oCmluZGV4IDU4NzY0ZDAuLmNlOTI3M2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NSVA0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTUlQNDA1LmgKQEAgLTMwOCw5ICszMDgsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX0FERFIJMHhGMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJMHgxMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIJLyogaW5zaWRlIG9mIE9uIENoaXAgU1JBTSAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJLyogRW5kIG9mIE9uIENoaXAgU1JBTQkgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0CQkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCS8qIFNpemUgb2YgT24gQ2hpcCBTUkFNCSAgICAgICAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAvKiByZXNlcnZlIHNvbWUgbWVtb3J5IGZvciBQT1NUIGFuZCBCT09UIGxpbWl0IGluZm8gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAkoQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgLSAzMikKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01MMi5oIGIvaW5jbHVkZS9jb25maWdzL01MMi5oCmluZGV4IDg1NzlmOTYuLmVkNzgzODcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NTDIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTUwyLmgKQEAgLTIxMSw5ICsyMTEsOCBAQAogICovCiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICAgICAgIDB4ODAwMDAwICAvKiBpbnNpZGUgb2YgU0RSQU0gICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgICAgICAgMHgyMDAwICAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAgICAgICAgICAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAgICAgICAgMHgyMDAwICAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gICAgICAgICAgICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUICAgICAgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01PVVNTRS5oIGIvaW5jbHVkZS9jb25maWdzL01PVVNTRS5oCmluZGV4IDY5YzBjYWIuLjk1MjljODcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NT1VTU0UuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTU9VU1NFLmgKQEAgLTE1Nyw5ICsxNTcsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgQ09ORklHX1NZU19TRFJBTV9CQVNFICsgQ09ORklHX1NZU19NT05JVE9SX0xFTgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgIDB4MkYwMCAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICA2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAgIDB4MkYwMCAgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQgIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODI2MEFEUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzgyNjBBRFMuaAppbmRleCAwNWNhZjIxLi4yMjI1YjQ2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODI2MEFEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4MjYwQURTLmgKQEAgLTM0OCw5ICszNDgsOCBAQAogI2RlZmluZSBCQ1NSX1BDSV9NT0RFCQkweDAxMDAwMDAwCiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDIwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDIwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNpZmRlZiBDT05GSUdfU1lTX0xPV0JPT1QKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4MjY2QURTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODI2NkFEUy5oCmluZGV4IDk3MjAyZGYuLjU3OTQ0NzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4MjY2QURTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzgyNjZBRFMuaApAQCAtMzgyLDkgKzM4Miw4IEBACiAjZGVmaW5lIEZFVEhfUlNUCQkweDA0MDAwMDA0CiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDQwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDQwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qIFVzZSB0aGlzIEhSQ1cgZm9yIGJvb3RpbmcgZnJvbSBhZGRyZXNzIDB4ZmUwMDAwMCAoSlAzIGluIHNldHRpbmcgMS0yKSAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzA4UkRCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODMwOFJEQi5oCmluZGV4IDJlYWIxYzQuLjNmZjE3NWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzA4UkRCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzgzMDhSREIuaApAQCAtMjEyLDEwICsyMTIsOSBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweEU2MDAwMDAwIC8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCTB4MTAwMCAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMHgxMDAgLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJCTB4MTAwMCAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KICNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJXAotCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKwkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKIC8qCiAgKiBMb2NhbCBCdXMgQ29uZmlndXJhdGlvbiAmIENsb2NrIFNldHVwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODMxM0VSREIuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzEzRVJEQi5oCmluZGV4IDFiMmJlYmIuLjEyMDExMzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzEzRVJEQi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzEzRVJEQi5oCkBAIC0yMDgsMTAgKzIwOCw5IEBACiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4RkQwMDAwMDAJLyogSW5pdGlhbCBSQU0gYWRkcmVzcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAJCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMAkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMHgxMDAJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyogQ09ORklHX1NZU19NT05JVE9SX0xFTiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgQ09ORklHX0VOVl9TRUNUX1NJWkUgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzE1RVJEQi5oIGIvaW5jbHVkZS9jb25maWdzL01QQzgzMTVFUkRCLmgKaW5kZXggMTdjZTNiYy4uNjQ3NmM0YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzgzMTVFUkRCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzgzMTVFUkRCLmgKQEAgLTE5MSw5ICsxOTEsOCBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweEU2MDAwMDAwIC8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkweDEwMCAvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMCAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAvKgogICogTG9jYWwgQnVzIENvbmZpZ3VyYXRpb24gJiBDbG9jayBTZXR1cApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzgzMjNFUkRCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODMyM0VSREIuaAppbmRleCBhYmJiOTJhLi4xMTkxZWVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODMyM0VSREIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODMyM0VSREIuaApAQCAtMTY1LDkgKzE2NSw4IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4RTYwMDAwMDAJLyogSW5pdGlhbCBSQU0gYWRkcmVzcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAJCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkweDEwMAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAJCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKIC8qCiAgKiBMb2NhbCBCdXMgQ29uZmlndXJhdGlvbiAmIENsb2NrIFNldHVwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODMyWEVNRFMuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzJYRU1EUy5oCmluZGV4IDYwMDlkNDQuLmFmZmEzYTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzJYRU1EUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzJYRU1EUy5oCkBAIC0xNTIsOSArMTUyLDggQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhFNjAwMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMAkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTB4MTAwCQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMAkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAogLyoKICAqIExvY2FsIEJ1cyBDb25maWd1cmF0aW9uICYgQ2xvY2sgU2V0dXAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzQ5RU1EUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzgzNDlFTURTLmgKaW5kZXggNTY4Mjc4Ny4uNDViNmI1ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzgzNDlFTURTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzgzNDlFTURTLmgKQEAgLTE5MywxMCArMTkzLDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhGRDAwMDAwMAkJLyogSW5pdGlhbCBSQU0gYWRkcmVzcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAJCQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAJCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0qLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkweDEwMAkJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMzg0ICogMTAyNCkJCS8qIFJlc2VydmUgMzg0IGtCIGZvciBNb24gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzQ5SVRYLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODM0OUlUWC5oCmluZGV4IDVkMTBhNWUuLmRlMjMzZmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzQ5SVRYLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzgzNDlJVFguaApAQCAtMzA2LDEwICszMDYsOSBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhGRDAwMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMAkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0qLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0qLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkweDEwMAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKiBDT05GSUdfU1lTX01PTklUT1JfTEVOIG11c3QgYmUgYSBtdWx0aXBsZSBvZiBDT05GSUdfRU5WX1NFQ1RfU0laRSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzgzNjBFTURTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODM2MEVNRFMuaAppbmRleCBiYzY0NGJhLi43YjgyYzQzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODM2MEVNRFMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODM2MEVNRFMuaApAQCAtMTgxLDkgKzE4MSw4IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4RTYwMDAwMDAgLyogSW5pdGlhbCBSQU0gYWRkcmVzcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTB4MTAwIC8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKIC8qCiAgKiBMb2NhbCBCdXMgQ29uZmlndXJhdGlvbiAmIENsb2NrIFNldHVwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODM2MEVSREsuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzYwRVJESy5oCmluZGV4IGU5YTY0MDAuLmIwY2RjMDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzYwRVJESy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzYwRVJESy5oCkBAIC0xNzIsOSArMTcyLDggQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhFNjAwMDAwMCAvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMCAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMHgxMDAgLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAogLyoKICAqIExvY2FsIEJ1cyBDb25maWd1cmF0aW9uICYgQ2xvY2sgU2V0dXAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4MzdYRU1EUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzgzN1hFTURTLmgKaW5kZXggZmEwZGE0OC4uYzIzNzk5MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzgzN1hFTURTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzgzN1hFTURTLmgKQEAgLTIxNSw5ICsyMTUsOCBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweEU2MDAwMDAwIC8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkweDEwMCAvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMCAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAvKgogICogTG9jYWwgQnVzIENvbmZpZ3VyYXRpb24gJiBDbG9jayBTZXR1cApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzgzN1hFUkRCLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODM3WEVSREIuaAppbmRleCA5ZDk5YTkzLi4zODVjN2MzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODM3WEVSREIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODM3WEVSREIuaApAQCAtMjM4LDkgKzIzOCw4IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4RTYwMDAwMDAgLyogSW5pdGlhbCBSQU0gYWRkcmVzcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTB4MTAwIC8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKIC8qCiAgKiBMb2NhbCBCdXMgQ29uZmlndXJhdGlvbiAmIENsb2NrIFNldHVwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODUzNkRTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODUzNkRTLmgKaW5kZXggOGI4ZjQ2Ny4uODQxMGJiNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg1MzZEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTM2RFMuaApAQCAtMzAzLDExICszMDMsMTAgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhmZmQwMDAwMAkvKiBJbml0aWFsIEwxIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgwMDAwNDAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgwMDAwNDAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KICNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgXAotCQkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisJCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JKDI1NiAqIDEwMjQpIC8qIFJlc2VydmUgMjU2IGtCIGZvciBNb24gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTQwQURTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0MEFEUy5oCmluZGV4IGIxZWUwN2IuLjkzODZmNjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTQwQURTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDBBRFMuaApAQCAtMjMyLDEwICsyMzIsOSBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweGU0MDEwMDAwCS8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpICAgIC8qIFJlc2VydmUgMjU2IGtCIGZvciBNb24gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTQwRVZBTC5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDBFVkFMLmgKaW5kZXggY2M1MmE2Ny4uYTk2ODk0OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg1NDBFVkFMLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDBFVkFMLmgKQEAgLTE2NCwxMCArMTY0LDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHg0MDAwMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KSAgICAvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0MUNEUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDFDRFMuaAppbmRleCAwMzdhYWU3Li4xMmNlNmY3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0MUNEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTQxQ0RTLmgKQEAgLTI1NCwxMCArMjU0LDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhlNDAxMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkgICAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkgICAgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkgICAgLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KSAvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0NERTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0NERTLmgKaW5kZXggMGI2OTg4NS4uZTk0ODIyZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg1NDREUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTQ0RFMuaApAQCAtMjAzLDExICsyMDMsMTAgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sgICAgICAxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAgICAgIDB4ZjQwMTAwMDAgICAgICAvKiBJbml0aWFsIEwxIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgICAgMHgwMDAwNDAwMCAgICAgIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAgICAgICAweDAwMDA0MDAwICAgICAgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCiAKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMjU2ICogMTAyNCkgLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzg1NDhDRFMuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTQ4Q0RTLmgKaW5kZXggNWQyMWQxMS4uYjIyMWE1YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg1NDhDRFMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0OENEUy5oCkBAIC0yNzMsMTIgKzI3MywxMSBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweGU0MDEwMDAwCS8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfTDJfQUREUgkweGY4ZjgwMDAwCS8qIHJlbG9jYXRlIGJvb3QgTDJTUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KSAvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU1NUNEUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NTVDRFMuaAppbmRleCAwMDY4Njg0Li4zMzRhNDEwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU1NUNEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTU1Q0RTLmgKQEAgLTI1MiwxMCArMjUyLDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhlNDAxMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkgICAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkgICAgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkgICAgLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KSAvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2MEFEUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NjBBRFMuaAppbmRleCA5NmY3MzgzLi43NDRlNGEzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2MEFEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTYwQURTLmgKQEAgLTIyOSwxMCArMjI5LDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhlNDAxMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KSAgICAvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2OE1EUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NjhNRFMuaAppbmRleCBkNjE3MWI0Li4yODE5MThiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2OE1EUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTY4TURTLmgKQEAgLTIzNSwxMCArMjM1LDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhlNDAxMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkgICAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkgICAgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkgICAgLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KSAvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2OU1EUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NjlNRFMuaAppbmRleCBlM2E5OTdlLi42YTE1ZGE1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2OU1EUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTY5TURTLmgKQEAgLTI2OCwxMSArMjY4LDEwIEBACiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4ZTQwMTAwMDAgIC8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCSAgICAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwCSAgICAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KICNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJXAotCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkoMjU2ICogMTAyNCkJLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzg1NzJEUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NzJEUy5oCmluZGV4IGU4MjA2ZWEuLmY5NDljYzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTcyRFMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU3MkRTLmgKQEAgLTI2OCwxMCArMjY4LDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhmZmQwMDAwMAkvKiBJbml0aWFsIEwxIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgwMDAwNDAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgwMDAwNDAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMjU2ICogMTAyNCkgLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzg2MTBIUENELmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODYxMEhQQ0QuaAppbmRleCBjODc2ZTk4Li4xN2RhYzZjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODYxMEhQQ0QuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODYxMEhQQ0QuaApAQCAtMjEzLDEwICsyMTMsOSBAQAogI2Vsc2UKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4ZTQwMDAwMDAJLyogSW5pdGlhbCBSQU0gYWRkcmVzcyAqLwogI2VuZGlmCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSg1MTIgKiAxMDI0KQkvKiBSZXNlcnZlIDUxMiBLQiBmb3IgTW9uICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODY0MUhQQ04uaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4NjQxSFBDTi5oCmluZGV4IDkwMDllM2MuLmFiM2FlNWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4NjQxSFBDTi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NjQxSFBDTi5oCkBAIC0yNzEsMTAgKzI3MSw5IEBACiAjZWxzZQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhmODQwMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCiAjZW5kaWYKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpCS8qIFJlc2VydmUgMjU2IGtCIGZvciBNb24gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NVVNFTktJLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVVTRU5LSS5oCmluZGV4IGUwYmZkMDguLjI3ZWJjZWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NVVNFTktJLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01VU0VOS0kuaApAQCAtMTU1LDExICsxNTUsOSBAQAogICovCiAKIC8qICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UgICAgICAgIENPTkZJR19TWVNfVEVYVF9CQVNFICovCi0vKiNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgIDI1NiovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAgIDEyOAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgICAgIDB4NDAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgICAweDEwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICAgICAgMHgxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NVkJDX1AuaCBiL2luY2x1ZGUvY29uZmlncy9NVkJDX1AuaAppbmRleCBhY2M3MTg3Li42ZjRkMTg3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVZCQ19QLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01WQkNfUC5oCkBAIC0yMzUsMTAgKzIzNSw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfREVGQVVMVF9NQkFSCTB4ODAwMDAwMDAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJTVBDNVhYWF9TUkFNCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlNUEM1WFhYX1NSQU1fU0laRQogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlDT05GSUdfU1lTX1RFWFRfQkFTRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01WQkxNNy5oIGIvaW5jbHVkZS9jb25maWdzL01WQkxNNy5oCmluZGV4IDA0ZDk3Y2QuLmMyMDEzMTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NVkJMTTcuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVZCTE03LmgKQEAgLTEyMywxMCArMTIzLDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4RkQwMDAwMDAJLyogSW5pdGlhbCBSQU0gYWRkcmVzcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAJCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMAkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMHgxMDAJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyogQ09ORklHX1NZU19NT05JVE9SX0xFTiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgQ09ORklHX0VOVl9TRUNUX1NJWkUgKi8KQEAgLTMyNCw3ICszMjMsNyBAQAogI2RlZmluZSBDT05GSUdfU1lTX1NDQ1JfVFNFQzFDTQkxCiAjZGVmaW5lIENPTkZJR19TWVNfU0NDUl9UU0VDMkNNCTEKIAotI2RlZmluZSBDT05GSUdfU1lTX1NJQ1JICTB4MWZmZjgwMDMKKyNkZWZpbmUgQ09ORklHX1NZU19TSUNSSAkweDFmZWYwMDAzCiAjZGVmaW5lIENPTkZJR19TWVNfU0lDUkwJKFNJQ1JMX0xEUF9BIHwgU0lDUkxfVVNCMSB8IFNJQ1JMX1VTQjApCiAKICNkZWZpbmUgQ09ORklHX1NZU19ISUQwX0lOSVQJMHgwMDAwMDAwMDAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NVkJMVUUuaCBiL2luY2x1ZGUvY29uZmlncy9NVkJMVUUuaAppbmRleCBkZDM5MmQwLi4zYWVkNDQ3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVZCTFVFLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01WQkxVRS5oCkBAIC0yMTQsOSArMjE0LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAgICAgMHg0MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgICAgIDB4MTAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgIDEyOAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICAgICAgMHgxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAvKgogICogTG93IExldmVsIENvbmZpZ3VyYXRpb24gU2V0dGluZ3MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NVlMxLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVZTMS5oCmluZGV4IDliZjdmY2IuLjQ2MTUxZGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NVlMxLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01WUzEuaApAQCAtMTQwLDkgKzE0MCw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVZTTVIuaCBiL2luY2x1ZGUvY29uZmlncy9NVlNNUi5oCmluZGV4IGMxMjUxNTcuLmY3ZmQ5YjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NVlNNUi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NVlNNUi5oCkBAIC0yMDQsMTEgKzIwNCwxMCBAQAogI2RlZmluZSBDT05GSUdfU1lTX0RFRkFVTFRfTUJBUgkweDgwMDAwMDAwCiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCU1QQzVYWFhfU1JBTQotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlNUEM1WFhYX1NSQU1fU0laRQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJTVBDNVhYWF9TUkFNX1NJWkUKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4Ci0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIFwKLQkJCQkJCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIFwKKwkJCQkJCUdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJQ09ORklHX1NZU19URVhUX0JBU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NaWdvUi5oIGIvaW5jbHVkZS9jb25maWdzL01pZ29SLmgKaW5kZXggNjA4Mzg5Mi4uOGE2YjhkMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01pZ29SLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01pZ29SLmgKQEAgLTk5LDcgKzk5LDYgQEAKIC8qIFNpemUgb2YgRFJBTSByZXNlcnZlZCBmb3IgbWFsbG9jKCkgdXNlICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkoMjU2ICogMTAyNCkKIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJKDI1NikKICNkZWZpbmUgQ09ORklHX1NZU19CT09UTUFQU1oJKDggKiAxMDI0ICogMTAyNCkKIAogLyogRkxBU0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9ORVRQSE9ORS5oIGIvaW5jbHVkZS9jb25maWdzL05FVFBIT05FLmgKaW5kZXggNjJlZWY0Ni4uMDRmMGYwYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL05FVFBIT05FLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL05FVFBIT05FLmgKQEAgLTE3Miw5ICsxNzIsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MzAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MzAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL05FVFRBLmggYi9pbmNsdWRlL2NvbmZpZ3MvTkVUVEEuaAppbmRleCBkYjIyYmEzLi43OTVjMGY2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTkVUVEEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTkVUVEEuaApAQCAtMTg1LDkgKzE4NSw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgzMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgzMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTkVUVEEyLmggYi9pbmNsdWRlL2NvbmZpZ3MvTkVUVEEyLmgKaW5kZXggODcwMDBlNi4uZDAyZGNhOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL05FVFRBMi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9ORVRUQTIuaApAQCAtMTczLDkgKzE3Myw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgzMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgzMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTkVUVklBLmggYi9pbmNsdWRlL2NvbmZpZ3MvTkVUVklBLmgKaW5kZXggYjcxMTlmZC4uYTkyZTNhNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL05FVFZJQS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9ORVRWSUEuaApAQCAtMTUzLDkgKzE1Myw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgzMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgzMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTlNDVS5oIGIvaW5jbHVkZS9jb25maWdzL05TQ1UuaAppbmRleCA0Zjc2Y2ExLi43ZTNiYTJhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTlNDVS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9OU0NVLmgKQEAgLTE3NSw5ICsxNzUsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL05YODIzLmggYi9pbmNsdWRlL2NvbmZpZ3MvTlg4MjMuaAppbmRleCBlNTg4ZWEzLi5iYjBkM2EzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTlg4MjMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTlg4MjMuaApAQCAtMTE3LDkgKzExNyw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9PQ1JUQy5oIGIvaW5jbHVkZS9jb25maWdzL09DUlRDLmgKaW5kZXggMDM0MzA0My4uNjVhMzY2YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL09DUlRDLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL09DUlRDLmgKQEAgLTI5Nyw5ICsyOTcsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJMHgxMDAwCiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0RBVEFfQUREUiAvKiBpbnNpZGUgb2YgU0RSQU0JCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZW5kaWYJLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL09SU0cuaCBiL2luY2x1ZGUvY29uZmlncy9PUlNHLmgKaW5kZXggY2VmMTExNy4uYzJlM2IyYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL09SU0cuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvT1JTRy5oCkBAIC0yOTMsOSArMjkzLDggQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIgLyogaW5zaWRlIG9mIFNEUkFNCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9PWEMuaCBiL2luY2x1ZGUvY29uZmlncy9PWEMuaAppbmRleCA5YTBjNTU4Li5iYzhlNzE4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvT1hDLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL09YQy5oCkBAIC0xNDgsMTAgKzE0OCw5IEBACiAjZW5kaWYKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHg0MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMAogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCSg1MTIgPDwgMTApCS8qIFJlc2VydmUgNTEyIGtCIGZvciBtYWxsb2MoKQkqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1AxMDIyRFMuaCBiL2luY2x1ZGUvY29uZmlncy9QMTAyMkRTLmgKaW5kZXggMWE0NjMyZi4uNmM4NTc5ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1AxMDIyRFMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUDEwMjJEUy5oCkBAIC0xNTMsMTEgKzE1MywxMCBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhmZmQwMDAwMCAvKiBJbml0aWFsIEwxIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCTB4MDAwMDQwMDAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCQkweDAwMDA0MDAwIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAlcCi0JKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSg1MTIgKiAxMDI0KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1AxX1AyX1JEQi5oIGIvaW5jbHVkZS9jb25maWdzL1AxX1AyX1JEQi5oCmluZGV4IGNmZjBlZDM0Li5iOTlmMzgzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUDFfUDJfUkRCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1AxX1AyX1JEQi5oCkBAIC0yMTEsMTEgKzIxMSwxMCBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAgICAgIDB4ZmZkMDAwMDAJLyogc3RhY2sgaW4gUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MDAwMDQwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MDAwMDQwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCBcCi0JCQkJCQktIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSBcCisJCQkJCQktIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpIC8qIFJlc2VydmUgMjU2IGtCIGZvciBNb24qLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1AyMDIwRFMuaCBiL2luY2x1ZGUvY29uZmlncy9QMjAyMERTLmgKaW5kZXggZTdjZGI5Mi4uMGFmMjE1MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1AyMDIwRFMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUDIwMjBEUy5oCkBAIC03Nyw4ICs3Nyw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTlVNX0FERFJfTUFQCQkxNgkvKiBudW1iZXIgb2YgVExCMSBlbnRyaWVzICovCiAjZW5kaWYKIAotI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHgwMDAwMDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uICovCi0jZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9FTkQJCTB4N2ZmZmZmZmYKKyNkZWZpbmUgQ09ORklHX1BPU1QgQ09ORklHX1NZU19QT1NUX01FTU9SWQkvKiB0ZXN0IFBPU1QgbWVtb3J5IHRlc3QgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCTB4MDAyMDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbiAqLworI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDAwNDAwMDAwCiAjZGVmaW5lIENPTkZJR19QQU5JQ19IQU5HCS8qIGRvIG5vdCByZXNldCBib2FyZCBvbiBwYW5pYyAqLwogCiAvKgpAQCAtMjcxLDEwICsyNzIsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFJfUEhZU19ISUdIIDAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVNfTE9XIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTCiAjZW5kaWYKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgwMDAwNDAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgwMDAwNDAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMjU2ICogMTAyNCkgLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1AzRzQuaCBiL2luY2x1ZGUvY29uZmlncy9QM0c0LmgKaW5kZXggNDdiNzU1OC4uZWI2NDFmNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1AzRzQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUDNHNC5oCkBAIC0xODUsOSArMTg1LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQwMDAwMDAwCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMAotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0IGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1BBVEkuaCBiL2luY2x1ZGUvY29uZmlncy9QQVRJLmgKaW5kZXggYjA3Y2FjMS4uZGEyZDYwMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BBVEkuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUEFUSS5oCkBAIC0xMzIsOSArMTMyLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkoQ09ORklHX1NZU19JTU1SICsgMHgwMDNmOTgwMCkJLyogUGh5c2ljYWwgc3RhcnQgYWRyZXNzIG9mIGludGVybmFsIE1QQzU1NSB3cml0YWJsZSBSQU0gKi8KLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJKENPTkZJR19TWVNfSU1NUiArIDB4MDAzZmZmZmYpCS8qIFBoeXNpY2FsIGVuZCBhZHJlc3Mgb2YgaW50ZXJuYWwgTVBDNTU1IHVzZWQgUkFNIGFyZWEJKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJCS8qIFNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZ2xvYmFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUikgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpIC8qIE9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgcmFtICovCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkoQ09ORklHX1NZU19JTU1SICsgMHgwMDNmZmZmZikJLyogUGh5c2ljYWwgZW5kIGFkcmVzcyBvZiBpbnRlcm5hbCBNUEM1NTUgdXNlZCBSQU0gYXJlYQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUikgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkgLyogT2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiByYW0gKi8KICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJKENPTkZJR19TWVNfSU1NUiArIDB4MDNmYTAwMCkJLyogUGh5c2ljYWwgc3RhcnQgYWRyZXNzIG9mIGluaXRhbCBzdGFjayAqLwogLyoKICAqIFN0YXJ0IGFkZHJlc3NlcyBmb3IgdGhlIGZpbmFsIG1lbW9yeSBjb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUENJNDA1LmggYi9pbmNsdWRlL2NvbmZpZ3MvUENJNDA1LmgKaW5kZXggMjg3NjliMy4uNmJlNWMyNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BDSTQwNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QQ0k0MDUuaApAQCAtMzA3LDEwICszMDcsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX0FERFIJMHhGODAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJMHgxMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIgLyogaW5zaWRlIG9mIFNEUkFNCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZW5kaWYJLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1BDSTU0NDEuaCBiL2luY2x1ZGUvY29uZmlncy9QQ0k1NDQxLmgKaW5kZXggM2U3ZTc0Yi4uNzA3NzVlNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BDSTU0NDEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUENJNTQ0MS5oCkBAIC02MCwxMiArNjAsMTEgQEAKICAqCS1UaGUgc3RhY2sgaXMgcGxhY2VkIGJlbG93IGdsb2JhbCBkYXRhICgmZ3Jvd3MgZG93bikuCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMTI4ICogMTAyNCkJLyogUmVzZXJ2ZSAxMjhrCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CQkvKiBHbG9iYWwgZGF0YSBzaXplIHJzdmQqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlDT05GSUdfU1lTX1RFWFRfQkFTRQogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19CQVNFCQkoQ09ORklHX1NZU19NT05JVE9SX0JBU0UgLSBDT05GSUdfU1lTX01BTExPQ19MRU4pCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX01BTExPQ19CQVNFIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19NQUxMT0NfQkFTRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1AJCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUENJUFBDMi5oIGIvaW5jbHVkZS9jb25maWdzL1BDSVBQQzIuaAppbmRleCBkMGNlOTI0Li5lNzc4YzU5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUENJUFBDMi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QQ0lQUEMyLmgKQEAgLTE0MCwxMSArMTQwLDEwIEBACiAKIC8qIFNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YQogICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAxMjgKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgICAgIDB4NDAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgICAweDgwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICAgICAgMHg4MDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQgICAgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9QQ0lQUEM2LmggYi9pbmNsdWRlL2NvbmZpZ3MvUENJUFBDNi5oCmluZGV4IDhmN2VjMDIuLjQ4OTExYjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9QQ0lQUEM2LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1BDSVBQQzYuaApAQCAtMTQyLDExICsxNDIsMTAgQEAKIAogLyogU2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhCiAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgIDEyOAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAgICAgMHg0MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgICAgIDB4ODAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgICAgICAweDgwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVCAgICBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1BJUDQwNS5oIGIvaW5jbHVkZS9jb25maWdzL1BJUDQwNS5oCmluZGV4IGUzY2Y5NDMuLjJkYzYwNTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9QSVA0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUElQNDA1LmgKQEAgLTI1OCw5ICsyNTgsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX0FERFIJMHhGMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJMHgxMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIJLyogaW5zaWRlIG9mIE9uIENoaXAgU1JBTSAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJLyogRW5kIG9mIE9uIENoaXAgU1JBTQkgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0CQkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCS8qIFNpemUgb2YgT24gQ2hpcCBTUkFNCSAgICAgICAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUEsxQzIwLmggYi9pbmNsdWRlL2NvbmZpZ3MvUEsxQzIwLmgKaW5kZXggOGU4YzA0OS4uYjQ2NmM0YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BLMUMyMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QSzFDMjAuaApAQCAtNjIsMTIgKzYyLDExIEBACiAgKgktVGhlIHN0YWNrIGlzIHBsYWNlZCBiZWxvdyBnbG9iYWwgZGF0YSAoJmdyb3dzIGRvd24pLgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpCS8qIFJlc2VydmUgMTI4awkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogR2xvYmFsIGRhdGEgc2l6ZSByc3ZkKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJQ09ORklHX1NZU19URVhUX0JBU0UKICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfQkFTRQkJKENPTkZJR19TWVNfTU9OSVRPUl9CQVNFIC0gQ09ORklHX1NZU19NQUxMT0NfTEVOKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19NQUxMT0NfQkFTRSAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfTUFMTE9DX0JBU0UgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQCQlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1BMVTQwNS5oIGIvaW5jbHVkZS9jb25maWdzL1BMVTQwNS5oCmluZGV4IDM4NDRlNDguLmRjZjYyOTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9QTFU0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUExVNDA1LmgKQEAgLTM2OCwxMCArMzY4LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSCTB4RjgwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC8qIGluc2lkZSBvZiBTRFJBTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAgIDEyOCAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9QTTUyMC5oIGIvaW5jbHVkZS9jb25maWdzL1BNNTIwLmgKaW5kZXggNTgzMjMwNy4uODM1NGU3MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BNNTIwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1BNNTIwLmgKQEAgLTIzMywxMSArMjMzLDEwIEBACiAKIC8qIFVzZSBTUkFNIHVudGlsIFJBTSB3aWxsIGJlIGF2YWlsYWJsZSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJTVBDNVhYWF9TUkFNCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9TSVpFCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9TSVpFCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNICovCiAKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFICAgIENPTkZJR19TWVNfVEVYVF9CQVNFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUE04MjYuaCBiL2luY2x1ZGUvY29uZmlncy9QTTgyNi5oCmluZGV4IGQyNjI1NGYuLjUwMWY2OTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9QTTgyNi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QTTgyNi5oCkBAIC0yOTMsOSArMjkzLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDQwMDAgIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDQwMDAgIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUE04MjguaCBiL2luY2x1ZGUvY29uZmlncy9QTTgyOC5oCmluZGV4IDMwNTNhZDQuLjFhZjA0M2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9QTTgyOC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QTTgyOC5oCkBAIC0yODcsOSArMjg3LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDQwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4IC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1BNODU0LmggYi9pbmNsdWRlL2NvbmZpZ3MvUE04NTQuaAppbmRleCA1OTYzMzM0Li4xZTIwODlmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUE04NTQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUE04NTQuaApAQCAtMTY1LDEwICsxNjUsOSBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweGU0MDEwMDAwCS8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDUxMiAqIDEwMjQpCS8qIFJlc2VydmUgNTEyIGtCIGZvciBNb24gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9QTTg1Ni5oIGIvaW5jbHVkZS9jb25maWdzL1BNODU2LmgKaW5kZXggMTU1OWZkNi4uZDNlOGY0MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BNODU2LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1BNODU2LmgKQEAgLTE2OCwxMCArMTY4LDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhlNDAxMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSg1MTIgKiAxMDI0KSAgICAvKiBSZXNlcnZlIDUxMiBrQiBmb3IgTW9uICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUE1DNDA1LmggYi9pbmNsdWRlL2NvbmZpZ3MvUE1DNDA1LmgKaW5kZXggYjFkMGVhNS4uYzJkYjVlYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BNQzQwNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QTUM0MDUuaApAQCAtMzI4LDEyICszMjgsMTEgQEAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0RBVEFfQUREUgogCiAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCiAKIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4Ci0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIFwKLQkJCQkJIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIFwKKwkJCQkJIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX09GX0xJQkZEVApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1BNQzQwNURFLmggYi9pbmNsdWRlL2NvbmZpZ3MvUE1DNDA1REUuaAppbmRleCA3NGI2NTZjLi44M2NlZTk2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUE1DNDA1REUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUE1DNDA1REUuaApAQCAtMjcwLDExICsyNzAsMTAgQEAKIC8qIGluc2lkZSBTRFJBTSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSCiAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAvKiBieXRlcyByZXMuIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gXAotCQkJCQkgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gXAorCQkJCQkgR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9QTUM0NDAuaCBiL2luY2x1ZGUvY29uZmlncy9QTUM0NDAuaAppbmRleCA3NTg1ZTZlYzEuLjRlYjA3MzUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9QTUM0NDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUE1DNDQwLmgKQEAgLTg4LDkgKzg4LDggQEAKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiA0NDBFUHgvNDQwR1J4IGhhdmUgMTZLQiBvZiBpbnRlcm5hbCBTUkFNLCBzbyBubyBuZWVkIGZvciBELUNhY2hlCSovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9CQVNFCS8qIE9DTSAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECSg0IDw8IDEwKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMjU2CS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJKDQgPDwgMTApCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAkoQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgLSAweDQpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9QTjYyLmggYi9pbmNsdWRlL2NvbmZpZ3MvUE42Mi5oCmluZGV4IDAxODc4YWIuLjdmMmYxMTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9QTjYyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1BONjIuaApAQCAtMTUyLDEyICsxNTIsMTAgQEAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJMHgwMDAzMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlDT05GSUdfU1lTX1RFWFRfQkFTRQogCi0vKiNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgIDI1NiovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHg0MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAogCiAjZGVmaW5lIENPTkZJR19TWVNfTk9fRkxBU0gJCTEJCS8qIFRoZXJlIGlzIG5vIEZMQVNIIG1lbW9yeQkqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1BQQ2hhbWVsZW9uRVZCLmggYi9pbmNsdWRlL2NvbmZpZ3MvUFBDaGFtZWxlb25FVkIuaAppbmRleCAzYmMzZDcwLi5hMTRiZDBlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUFBDaGFtZWxlb25FVkIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUFBDaGFtZWxlb25FVkIuaApAQCAtNTMxLDEwICs1MzEsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX0FERFIJMHhGODAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJMHgxMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIgLyogaW5zaWRlIG9mIFNEUkFNCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUVM4MjMuaCBiL2luY2x1ZGUvY29uZmlncy9RUzgyMy5oCmluZGV4IGVjMmUwYzkuLjM2ZWZiZjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9RUzgyMy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9RUzgyMy5oCkBAIC0yNzIsOSArMjcyLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0CQkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1FTODUwLmggYi9pbmNsdWRlL2NvbmZpZ3MvUVM4NTAuaAppbmRleCAzZDQ1NWM0Li41YzZlZDA3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUVM4NTAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUVM4NTAuaApAQCAtMjcyLDkgKzI3Miw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NAkJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9RUzg2MFQuaCBiL2luY2x1ZGUvY29uZmlncy9RUzg2MFQuaAppbmRleCA5OWNjZjA4Li5iMGJlZTgyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUVM4NjBULmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1FTODYwVC5oCkBAIC0xODEsOSArMTgxLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0CQkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1IzNjBNUEkuaCBiL2luY2x1ZGUvY29uZmlncy9SMzYwTVBJLmgKaW5kZXggYTAzNTVmMS4uYThlOWE0YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1IzNjBNUEkuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUjM2ME1QSS5oCkBAIC0xOTUsOSArMTk1LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9SQkM4MjMuaCBiL2luY2x1ZGUvY29uZmlncy9SQkM4MjMuaAppbmRleCA1YTIzZTU2Li40MDk4MGZlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUkJDODIzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1JCQzgyMy5oCkBAIC0xNjcsOSArMTY3LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9SUFhDbGFzc2ljLmggYi9pbmNsdWRlL2NvbmZpZ3MvUlBYQ2xhc3NpYy5oCmluZGV4IGU4ZThhNWQuLjI2N2VjZTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9SUFhDbGFzc2ljLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1JQWENsYXNzaWMuaApAQCAtMTgzLDkgKzE4Myw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgzMDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgzMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUlBYbGl0ZS5oIGIvaW5jbHVkZS9jb25maWdzL1JQWGxpdGUuaAppbmRleCBhNzYwOWNhLi43NDkyNmQ4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUlBYbGl0ZS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9SUFhsaXRlLmgKQEAgLTExOSw5ICsxMTksOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1JQWGxpdGVfRFcuaCBiL2luY2x1ZGUvY29uZmlncy9SUFhsaXRlX0RXLmgKaW5kZXggYjg5NWYwNS4uN2I1NjFjYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1JQWGxpdGVfRFcuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUlBYbGl0ZV9EVy5oCkBAIC0xOTQsOSArMTk0LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0CQkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1JQWHN1cGVyLmggYi9pbmNsdWRlL2NvbmZpZ3MvUlBYc3VwZXIuaAppbmRleCAyYWM3NjRkLi41YzE5YmQzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUlBYc3VwZXIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUlBYc3VwZXIuaApAQCAtMjY1LDkgKzI2NSw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAgICAgICBDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgICAgIDB4NDAwMCAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAxMjggICAgIC8qIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgICAgICAgIDB4NDAwMCAgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUICAgICAgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1JSdmlzaW9uLmggYi9pbmNsdWRlL2NvbmZpZ3MvUlJ2aXNpb24uaAppbmRleCA5NTMwMzgxLi43ZGNjMTRjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUlJ2aXNpb24uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUlJ2aXNpb24uaApAQCAtMTk2LDkgKzE5Niw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUmF0dGxlci5oIGIvaW5jbHVkZS9jb25maWdzL1JhdHRsZXIuaAppbmRleCBjZGZjZTZhLi40ODQ0ZmJhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUmF0dGxlci5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9SYXR0bGVyLmgKQEAgLTI0MSw5ICsyNDEsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX0lNTVIJCTB4RjAwMDAwMDAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MjAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MjAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCTB4MDAwMDAwMDAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9TQkM4NTQwLmggYi9pbmNsdWRlL2NvbmZpZ3MvU0JDODU0MC5oCmluZGV4IGI5MWRjNGIuLmZkOWJhY2MgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9TQkM4NTQwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1NCQzg1NDAuaApAQCAtMTkzLDEwICsxOTMsOSBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDcwMDAwMDAwCS8qIEluaXRpYWwgUkFNIGFkZHJlc3MJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpCS8qIFJlc2VydmUgMjU2IGtCIGZvciBNb24gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9TQ00uaCBiL2luY2x1ZGUvY29uZmlncy9TQ00uaAppbmRleCBlZGFkNDU5Li5lYzI2MjkwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvU0NNLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1NDTS5oCkBAIC0zMjUsOSArMzI1LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDQwMDAgIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDQwMDAgIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvU0lNUEM4MzEzLmggYi9pbmNsdWRlL2NvbmZpZ3MvU0lNUEM4MzEzLmgKaW5kZXggMTVkOTlmOS4uMzBhOGU0MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1NJTVBDODMxMy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9TSU1QQzgzMTMuaApAQCAtMTAzLDEwICsxMDMsOSBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweEZEMDAwMDAwCS8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCTB4MTAwMAkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0qLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJCTB4MTAwMAkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMHgxMDAJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyogQ09ORklHX1NZU19NT05JVE9SX0xFTiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgQ09ORklHX0VOVl9TRUNUX1NJWkUgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9TTTg1MC5oIGIvaW5jbHVkZS9jb25maWdzL1NNODUwLmgKaW5kZXggMjU5ZjhhYi4uODMzYjE4YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1NNODUwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1NNODUwLmgKQEAgLTEyNSw5ICsxMjUsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1NNTjQyLmggYi9pbmNsdWRlL2NvbmZpZ3MvU01ONDIuaAppbmRleCBiYTNhZGExLi42ZDg3ODBhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvU01ONDIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvU01ONDIuaApAQCAtNDgsNyArNDgsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvU1BEODIzVFMuaCBiL2luY2x1ZGUvY29uZmlncy9TUEQ4MjNUUy5oCmluZGV4IGIxMzJhNzguLmZiYTViNWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9TUEQ4MjNUUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9TUEQ4MjNUUy5oCkBAIC0xMzcsOSArMTM3LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9TWDEuaCBiL2luY2x1ZGUvY29uZmlncy9TWDEuaAppbmRleCA2MTQ5Mjc2Li4wMWMyYjNkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvU1gxLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1NYMS5oCkBAIC00Nyw3ICs0Nyw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9TWE5JODU1VC5oIGIvaW5jbHVkZS9jb25maWdzL1NYTkk4NTVULmgKaW5kZXggN2MzZjg3NC4uNzc0Yzk4ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1NYTkk4NTVULmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1NYTkk4NTVULmgKQEAgLTIwNSw5ICsyMDUsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1NhbmRwb2ludDgyNDAuaCBiL2luY2x1ZGUvY29uZmlncy9TYW5kcG9pbnQ4MjQwLmgKaW5kZXggZjYxMDdjZS4uZjk4NDE0MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1NhbmRwb2ludDgyNDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvU2FuZHBvaW50ODI0MC5oCkBAIC0xNTQsMjEgKzE1NCwxOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQkweDAwMDkwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUkFNQk9PVAkJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJKENPTkZJR19TWVNfTU9OSVRPUl9CQVNFICsgQ09ORklHX1NZU19NT05JVE9SX0xFTikKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMjU2ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKICNlbHNlCiAjdW5kZWYJQ09ORklHX1NZU19SQU1CT09UCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCTB4MDAwMzAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJQ09ORklHX1NZU19URVhUX0JBU0UKIAotLyojZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAyNTYqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICAgICAweDQwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EICAgICAgMHgxMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAgICAgIDB4MTAwMAorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1NhbmRwb2ludDgyNDUuaCBiL2luY2x1ZGUvY29uZmlncy9TYW5kcG9pbnQ4MjQ1LmgKaW5kZXggNjZhOThjMS4uYjQ3YWRjYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1NhbmRwb2ludDgyNDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvU2FuZHBvaW50ODI0NS5oCkBAIC0xMjQsMjEgKzEyNCwxOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQkweDAwMDkwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUkFNQk9PVAkJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJKENPTkZJR19TWVNfTU9OSVRPUl9CQVNFICsgQ09ORklHX1NZU19NT05JVE9SX0xFTikKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMjU2ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKICNlbHNlCiAjdW5kZWYJQ09ORklHX1NZU19SQU1CT09UCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCTB4MDAwMzAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJQ09ORklHX1NZU19URVhUX0JBU0UKIAotLyojZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAyNTYqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICAgICAweDQwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EICAgICAgMHgxMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAgICAgIDB4MTAwMAorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1RBU1JFRy5oIGIvaW5jbHVkZS9jb25maWdzL1RBU1JFRy5oCmluZGV4IGI2OWYwMTUuLmM5M2IxMmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9UQVNSRUcuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVEFTUkVHLmgKQEAgLTE4OSw5ICsxODksOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHgyMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBpbnRlcm5hbCBTUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX0VOVl9JU19JTl9GTEFTSAkxCkBAIC0yNTMsOSArMjUyLDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRUxJTkVfU0laRQkxNgogCiAjZGVmaW5lIElDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA4KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gOCkKICNkZWZpbmUgRENBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDQpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA0KQogI2RlZmluZSBDT05GSUdfU1lTX0lDQUNIRV9JTlYJCShDRl9DQUNSX0RDTSkKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRV9BQ1IxCQkoQ09ORklHX1NZU19TRFJBTV9CQVNFIHwgXAogCQkJCQkgQ0ZfQUREUk1BU0soQ09ORklHX1NZU19TRFJBTV9TSVpFKSB8IFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9UQjUyMDAuaCBiL2luY2x1ZGUvY29uZmlncy9UQjUyMDAuaAppbmRleCBhZDg2ZTJlLi5mZWFhZGYzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVEI1MjAwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1RCNTIwMC5oCkBAIC0yNTEsMTAgKzI1MSwxMCBAQAogI2RlZmluZSBDT05GSUdfU1lTX0VFUFJPTV9QQUdFX1dSSVRFX0RFTEFZX01TCTIwCiAKIC8qIExpc3Qgb2YgSTJDIGFkZHJlc3NlcyB0byBiZSB2ZXJpZmllZCBieSBQT1NUICovCi0jdW5kZWYgSTJDX0FERFJfTElTVAotI2RlZmluZSBJMkNfQUREUl9MSVNUCXsJQ09ORklHX1NZU19JMkNfRUVQUk9NX0FERFIsCVwKLQkJCQlDT05GSUdfU1lTX0kyQ19SVENfQUREUiwJXAotCQkJCUNPTkZJR19TWVNfSTJDX1NMQVZFIH0KKyN1bmRlZiBDT05GSUdfU1lTX1BPU1RfSTJDX0FERFJTCisjZGVmaW5lIENPTkZJR19TWVNfUE9TVF9JMkNfQUREUlMJe0NPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19SVENfQUREUiwJXAorCQkJCQkgQ09ORklHX1NZU19JMkNfU0xBVkV9CiAKIC8qCiAgKiBGbGFzaCBjb25maWd1cmF0aW9uCkBAIC0zMjcsMTQgKzMyNywxMyBAQAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJTVBDNVhYWF9TUkFNCiAjaWZkZWYgQ09ORklHX1BPU1QKIC8qIHByZXNlcnZlIHNwYWNlIGZvciB0aGUgcG9zdF93b3JkIGF0IGVuZCBvZiBvbi1jaGlwIFNSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1BPU1RfU0laRQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJTVBDNVhYWF9TUkFNX1BPU1RfU0laRQogI2Vsc2UKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1NJWkUKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9TSVpFCiAjZW5kaWYKIAogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJQ09ORklHX1NZU19URVhUX0JBU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9USzg4NUQuaCBiL2luY2x1ZGUvY29uZmlncy9USzg4NUQuaAppbmRleCBkODQ5ZGJjLi43MmM2NTIzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVEs4ODVELmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1RLODg1RC5oCkBAIC0yMjEsOSArMjIxLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9UT1A1MjAwLmggYi9pbmNsdWRlL2NvbmZpZ3MvVE9QNTIwMC5oCmluZGV4IGFiMTc3M2MuLjIyNjdkNTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9UT1A1MjAwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1RPUDUyMDAuaApAQCAtMjk3LDExICsyOTcsMTAgQEAKIAogLyogVXNlIFNSQU0gdW50aWwgUkFNIHdpbGwgYmUgYXZhaWxhYmxlICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglNUEM1WFhYX1NSQU0KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1NJWkUJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJTVBDNVhYWF9TUkFNX1NJWkUJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KIAogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UgICAgQ09ORklHX1NZU19URVhUX0JBU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9UT1A4NjAuaCBiL2luY2x1ZGUvY29uZmlncy9UT1A4NjAuaAppbmRleCBhOWQ5YmVkLi5kNmVhMjJkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVE9QODYwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1RPUDg2MC5oCkBAIC0yMzAsOSArMjMwLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJmMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJmMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfVlBEX1NJWkUJMjU2IC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIHZwZCBidWZmZXIgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1ZQRF9PRkZTRVQJKENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIC0gQ09ORklHX1NZU19JTklUX1ZQRF9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfVlBEX09GRlNFVC04KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1RRTTUyMDAuaCBiL2luY2x1ZGUvY29uZmlncy9UUU01MjAwLmgKaW5kZXggMjYxMmM3YS4uYzExZmU4YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1RRTTUyMDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVFFNNTIwMC5oCkBAIC0zNzAsMTAgKzM3MCwxMCBAQAogCiAvKiBMaXN0IG9mIEkyQyBhZGRyZXNzZXMgdG8gYmUgdmVyaWZpZWQgYnkgUE9TVCAqLwogI2lmIGRlZmluZWQgKENPTkZJR19NSU5JRkFQKQotI3VuZGVmIEkyQ19BRERSX0xJU1QKLSNkZWZpbmUgSTJDX0FERFJfTElTVAl7CUNPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSLAlcCi0JCQkJQ09ORklHX1NZU19JMkNfSFdNT05fQUREUiwJXAotCQkJCUNPTkZJR19TWVNfSTJDX1NMQVZFIH0KKyN1bmRlZiBDT05GSUdfU1lTX1BPU1RfSTJDX0FERFJTCisjZGVmaW5lIENPTkZJR19TWVNfUE9TVF9JMkNfQUREUlMJe0NPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19IV01PTl9BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19TTEFWRX0KICNlbmRpZgogCiAvKgpAQCAtNDg3LDE0ICs0ODcsMTMgQEAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCU1QQzVYWFhfU1JBTQogI2lmZGVmIENPTkZJR19QT1NUCiAvKiBwcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIHBvc3Rfd29yZCBhdCBlbmQgb2Ygb24tY2hpcCBTUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9QT1NUX1NJWkUKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9QT1NUX1NJWkUKICNlbHNlCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlNUEM1WFhYX1NSQU1fU0laRQogI2VuZGlmCiAKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCUNPTkZJR19TWVNfVEVYVF9CQVNFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODIzTC5oIGIvaW5jbHVkZS9jb25maWdzL1RRTTgyM0wuaAppbmRleCBiNjhkN2E3Li5mMmEyZTMzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODIzTC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9UUU04MjNMLmgKQEAgLTE4Miw5ICsxODIsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1RRTTgyM00uaCBiL2luY2x1ZGUvY29uZmlncy9UUU04MjNNLmgKaW5kZXggMzc0MzAwYi4uZjZiODU2YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1RRTTgyM00uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODIzTS5oCkBAIC0xNzcsOSArMTc3LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9UUU04MjYwLmggYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODI2MC5oCmluZGV4IDIxMDRlMDMuLjM2ZWNiZDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9UUU04MjYwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1RRTTgyNjAuaApAQCAtMzYyLDkgKzM2Miw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwICAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjggLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwICAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAgICAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1RRTTgyNzIuaCBiL2luY2x1ZGUvY29uZmlncy9UUU04MjcyLmgKaW5kZXggMDYzY2EyMy4uZDFkOWU4ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1RRTTgyNzIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODI3Mi5oCkBAIC00ODgsOSArNDg4LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDIwMDAgIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDIwMDAgIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODM0eC5oIGIvaW5jbHVkZS9jb25maWdzL1RRTTgzNHguaAppbmRleCAzNjM5OWNhLi43YzlkZDc5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODM0eC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9UUU04MzR4LmgKQEAgLTE1MSwxMCArMTUxLDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHgyMDAwMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMAkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0qLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0qLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkweDEwMAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgzODQgKiAxMDI0KSAvKiBSZXNlcnZlIDM4NCBrQiA9IDMgc2VjdC4gZm9yIE1vbiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1RRTTg1MEwuaCBiL2luY2x1ZGUvY29uZmlncy9UUU04NTBMLmgKaW5kZXggYzk3YmY2Ni4uNjExNGJiMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1RRTTg1MEwuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODUwTC5oCkBAIC0xNjcsOSArMTY3LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9UUU04NTBNLmggYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODUwTS5oCmluZGV4IDNlMTNmNjEuLjNiNTIwMjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9UUU04NTBNLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1RRTTg1ME0uaApAQCAtMTY2LDkgKzE2Niw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODU1TC5oIGIvaW5jbHVkZS9jb25maWdzL1RRTTg1NUwuaAppbmRleCAxYmMyODYxLi5mZDkwNTAxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODU1TC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9UUU04NTVMLmgKQEAgLTE3MSw5ICsxNzEsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1RRTTg1NU0uaCBiL2luY2x1ZGUvY29uZmlncy9UUU04NTVNLmgKaW5kZXggMTk3ZmZkZS4uM2UzZjZkZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1RRTTg1NU0uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODU1TS5oCkBAIC0yMDUsOSArMjA1LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9UUU04NXh4LmggYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODV4eC5oCmluZGV4IDU5NjU1YjFjLi44OTBkNmQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODV4eC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9UUU04NXh4LmgKQEAgLTI0MywxMCArMjQzLDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCShDT05GSUdfU1lTX0NDU1JCQVIgXAogCQkJCSArIDB4MDQwMTAwMDApCS8qIEluaXRpYWwgUkFNIGFkZHJlc3MJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCQkvKiBFbmQgdXNlZCBhcmVhIGluIFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwCQkvKiBTaXplIHVzZWQgYXJlYSBpbiBSQU0JKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkofkNPTkZJR19TWVNfVEVYVF9CQVNFICsgMSkvKiBSZXNlcnZlZCBmb3IgTW9uaXRvcgkqLwpAQCAtMzgwLDExICszNzksMTEgQEAKICAqIEdlbmVyYWwgUENJCiAgKiBBZGRyZXNzZXMgYXJlIG1hcHBlZCAxLTEuCiAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFCTB4ODAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9QSFlTCUNPTkZJR19TWVNfUENJMV9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX0JVUwkJMHg4MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0kxX01FTV9CVVMKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX01FTV9TSVpFCTB4MjAwMDAwMDAJLyogNTEyTQkJCSovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19CQVNFCShDT05GSUdfU1lTX0NDU1JCQVIgKyAweDAyMDAwMDAwKQotI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fUEhZUwlDT05GSUdfU1lTX1BDSTFfSU9fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fQlVTCShDT05GSUdfU1lTX0NDU1JCQVIgKyAweDAyMDAwMDAwKQorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fUEhZUwlDT05GSUdfU1lTX1BDSTFfSU9fQlVTCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19TSVpFCTB4MTAwMDAwMAkvKiAgMTZNCQkJKi8KIAogI2lmZGVmIENPTkZJR19QQ0lFMQpAQCAtMzkzLDE2ICszOTIsMTYgQEAKICAqIEFkZHJlc3NlcyBhcmUgbWFwcGVkIDEtMS4KICAqLwogI2lmZGVmIENPTkZJR19UUU1fQklHRkxBU0gKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRQkweGIwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX0JVUwkweGIwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1NJWkUJMHgxMDAwMDAwMCAgICAgIC8qIDUxMk0gICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQkFTRQkweGFmMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQlVTCQkweGFmMDAwMDAwCiAjZWxzZSAvKiAhQ09ORklHX1RRTV9CSUdGTEFTSCAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9CQVNFCTB4YzAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTCTB4YzAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRQkweDIwMDAwMDAwICAgICAgLyogNTEyTSAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19CQVNFCTB4ZWYwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19CVVMJCTB4ZWYwMDAwMDAKICNlbmRpZiAvKiBDT05GSUdfVFFNX0JJR0ZMQVNIICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRQotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMJQ09ORklHX1NZU19QQ0lFMV9JT19CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fUEhZUwlDT05GSUdfU1lTX1BDSUUxX0lPX0JVUwogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX1NJWkUJMHgxMDAwMDAwICAgICAgIC8qIDE2TSAgICAgICAgICAgICAgICAgICovCiAjZW5kaWYgLyogQ09ORklHX1BDSUUxICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9UUU04NjBMLmggYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODYwTC5oCmluZGV4IGQzZDBkYjQuLmNkZjQ4ODUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9UUU04NjBMLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1RRTTg2MEwuaApAQCAtMTcwLDkgKzE3MCw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODYwTS5oIGIvaW5jbHVkZS9jb25maWdzL1RRTTg2ME0uaAppbmRleCAwODU0ZDk1Li43Y2NjNjE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODYwTS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9UUU04NjBNLmgKQEAgLTE3MSw5ICsxNzEsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1RRTTg2MkwuaCBiL2luY2x1ZGUvY29uZmlncy9UUU04NjJMLmgKaW5kZXggYzI0NzczNy4uMDA4MmU3MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1RRTTg2MkwuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODYyTC5oCkBAIC0xNzQsOSArMTc0LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9UUU04NjJNLmggYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODYyTS5oCmluZGV4IDFiNmQ5Y2IuLjZlODkxZTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9UUU04NjJNLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1RRTTg2Mk0uaApAQCAtMTc0LDkgKzE3NCw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODY2TS5oIGIvaW5jbHVkZS9jb25maWdzL1RRTTg2Nk0uaAppbmRleCBhNTAxOGQ1Li44NjM2ZmY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVFFNODY2TS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9UUU04NjZNLmgKQEAgLTIxNyw5ICsyMTcsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1RRTTg4NUQuaCBiL2luY2x1ZGUvY29uZmlncy9UUU04ODVELmgKaW5kZXggNTA3ZmIyZi4uNTIwNDc3MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1RRTTg4NUQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODg1RC5oCkBAIC0yMTksOSArMjE5LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9Ub3RhbDUyMDAuaCBiL2luY2x1ZGUvY29uZmlncy9Ub3RhbDUyMDAuaAppbmRleCBjNTE4ZDZlLi43MTdiNWNkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVG90YWw1MjAwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1RvdGFsNTIwMC5oCkBAIC0yNDYsMTAgKzI0Niw5IEBACiAKIC8qIFVzZSBTUkFNIHVudGlsIFJBTSB3aWxsIGJlIGF2YWlsYWJsZSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJTVBDNVhYWF9TUkFNCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9TSVpFCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9TSVpFCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRSAgICBDT05GSUdfU1lTX1RFWFRfQkFTRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1ZDTUE5LmggYi9pbmNsdWRlL2NvbmZpZ3MvVkNNQTkuaAppbmRleCBlYmM4MWM0Li5lYmU5ZTQyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVkNNQTkuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVkNNQTkuaApAQCAtMTAxLDcgKzEwMSw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogLyojZGVmaW5lIENPTkZJR19NQUxMT0NfU0laRQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDEwMjQgKiAxMDI0KQkvKiBCVU5aSVAyIG5lZWRzIGEgbG90IG9mIFJBTSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1ZPSDQwNS5oIGIvaW5jbHVkZS9jb25maWdzL1ZPSDQwNS5oCmluZGV4IDAyNmQyYTQuLmYwYzBiZDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9WT0g0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVk9INDA1LmgKQEAgLTM3NywxMCArMzc3LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSCTB4RjgwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC8qIGluc2lkZSBvZiBTRFJBTQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1ZPTTQwNS5oIGIvaW5jbHVkZS9jb25maWdzL1ZPTTQwNS5oCmluZGV4IGZkZGVmYjIuLmZlYzlkZjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9WT000MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVk9NNDA1LmgKQEAgLTI1OCwxMCArMjU4LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSCTB4RjgwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC8qIGluc2lkZSBvZiBTRFJBTQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9Wb1ZQTi1HVy5oIGIvaW5jbHVkZS9jb25maWdzL1ZvVlBOLUdXLmgKaW5kZXggNjI0M2FmZS4uYzA2OTA5ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1ZvVlBOLUdXLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1ZvVlBOLUdXLmgKQEAgLTI5OCw5ICsyOTgsOCBAQAogCiAvKiBkZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJMHgyMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkJMTI4Ci0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCQkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJMHgyMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCQkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvVzdPTE1DLmggYi9pbmNsdWRlL2NvbmZpZ3MvVzdPTE1DLmgKaW5kZXggOWVhY2Q4Mi4uNWQxYzE4OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1c3T0xNQy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9XN09MTUMuaApAQCAtMzEzLDkgKzMxMyw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC8qIGluc2lkZSBvZiBTRFJBTQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NAkJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNpZiBkZWZpbmVkKENPTkZJR19DTURfS0dEQikKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9XN09MTUcuaCBiL2luY2x1ZGUvY29uZmlncy9XN09MTUcuaAppbmRleCA2NTkxZDAyLi40MjJhNzgxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvVzdPTE1HLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1c3T0xNRy5oCkBAIC0zMTYsOSArMzE2LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIgLyogaW5zaWRlIG9mIFNEUkFNCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0CQkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2lmIGRlZmluZWQoQ09ORklHX0NNRF9LR0RCKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1dVSDQwNS5oIGIvaW5jbHVkZS9jb25maWdzL1dVSDQwNS5oCmluZGV4IGUyM2FkNDEuLjAyN2E5MDQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9XVUg0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvV1VINDA1LmgKQEAgLTMyMSwxMCArMzIxLDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSCTB4RjgwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC8qIGluc2lkZSBvZiBTRFJBTQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1l1a29uODIyMC5oIGIvaW5jbHVkZS9jb25maWdzL1l1a29uODIyMC5oCmluZGV4IGEwZmNhMDMuLjBlMzQwZTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9ZdWtvbjgyMjAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvWXVrb244MjIwLmgKQEAgLTI1NywxMCArMjU3LDkgQEAKIAogLyogVXNlIFNSQU0gdW50aWwgUkFNIHdpbGwgYmUgYXZhaWxhYmxlICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkoQ09ORklHX1NZU19NQkFSICsgMHgyMDAwMCkKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg4MDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4ODAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJQ09ORklHX1NZU19URVhUX0JBU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9aUEMxOTAwLmggYi9pbmNsdWRlL2NvbmZpZ3MvWlBDMTkwMC5oCmluZGV4IDBlYWJmMzcuLjI2NWIxMTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9aUEMxOTAwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1pQQzE5MDAuaApAQCAtMTk1LDkgKzE5NSw4IEBACiAjZGVmaW5lIEJDU1JfUENJX01PREUJCTB4MDEKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyogSGFyZCByZXNldCBjb25maWd1cmF0aW9uIHdvcmQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9aVU1BLmggYi9pbmNsdWRlL2NvbmZpZ3MvWlVNQS5oCmluZGV4IDE3YWRhMGQuLjU0ODliZDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9aVU1BLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1pVTUEuaApAQCAtMTgwLDkgKzE4MCw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHg0MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMAorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwogCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9hMzIwZXZiLmggYi9pbmNsdWRlL2NvbmZpZ3MvYTMyMGV2Yi5oCmluZGV4IGZjYzU1NjMuLmY2N2NmMDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hMzIwZXZiLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2EzMjBldmIuaApAQCAtMTEwLDcgKzExMCw2IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEKICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU0RSQU0gY29udHJvbGxlciBjb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYTRtMDcyLmggYi9pbmNsdWRlL2NvbmZpZ3MvYTRtMDcyLmgKaW5kZXggMjRhMDRlYi4uMjBjMTE5YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2E0bTA3Mi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hNG0wNzIuaApAQCAtMTQ3LDI3ICsxNDcsNDMgQEAKICNkZWZpbmUgQ09ORklHX1BSRUJPT1QJCQkJInJ1biB0cnlfdXBkYXRlIgogCiAjZGVmaW5lCUNPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCQkJCVwKLQkiYms9cnVuIGFkZF9tdGQgOyBydW4gYWRkX2NvbnNvbGVzcGVjIDsgYm9vdG0gMjAwMDAwXDAiCVwKLQkiY2YxPWRpc2tib290IDIwMDAwMCAwOjFcMCIJXAotCSJib290Y21kX2NmMT1ydW4gYmNmMVwwIglcCi0JImJjZj1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L2hkYTNcMCIJXAotCSJib290Y21kX25mcz1ydW4gYm5mc1wwIglcCi0JIm5vcmFyZ3M9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9tdGRibG9jazMgcm9vdGZzdHlwZT1jcmFtZnNcMCIJXAotCSJib290Y21kX25vcj1jcC5iICR7a2VybmVsX2FkZHJ9IDIwMDAwMCAxMDAwMDA7IHJ1biBub3JhcmdzIGFkZGlwOyBydW4gYmtcMCIJXAotCSJibmZzPW5mcyAyMDAwMDAgJHtyb290cGF0aH0vYm9vdC91SW1hZ2UgOyBydW4gbmZzYXJncyBhZGRpcCA7IHJ1biBia1wwIglcCi0JIm5mc2FyZ3M9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9uZnMgcncgbmZzcm9vdD0ke3NlcnZlcmlwfToke3Jvb3RwYXRofVwwIglcCi0JInRyeV91cGRhdGU9dXNiIHN0YXJ0O3NsZWVwIDI7dXNiIHN0YXJ0O3NsZWVwIDE7ZmF0bG9hZCB1c2IgMCAyRjAwMDAgUENQVVVQRFQgMkZGO3VzYiBzdG9wO3NvdXJjZSAyRjAwMDBcMCIJXAotCSJlbnZfYWRkcj1GRTA2MDAwMFwwIglcCi0JImtlcm5lbF9hZGRyPUZFMTAwMDAwXDAiCVwKLQkicm9vdGZzX2FkZHI9RkUyMDAwMDBcMCIJXAotCSJhZGRfbXRkPXNldGVudiBib290YXJncyAke2Jvb3RhcmdzfSBtdGRwYXJ0cz1waHlzX21hcHBlZF9mbGFzaDozODRrKHUpLDY0MGsoZSksMW0oayksMzBtKHIpXDAiCVwKLQkiYmNmMT1ydW4gY2YxOyBydW4gYmNmOyBydW4gYWRkaXA7IHJ1biBia1wwIglcCi0JImFkZF9jb25zb2xlc3BlYz1zZXRlbnYgYm9vdGFyZ3MgJHtib290YXJnc30gY29uc29sZT0vZGV2L251bGwgcXVpZXRcMCIJXAotCSJhZGRpcD1pZiB0ZXN0IFwiJHtldGhhZGRyfVwiICE9IFwiMDA6MDA6MDA6MDA6MDA6MDBcIiA7IHRoZW4gaWYgdGVzdCAtbiAke2lwYWRkcn07IHRoZW4gc2V0ZW52IGJvb3RhcmdzICR7Ym9vdGFyZ3N9IGlwPSR7aXBhZGRyfToke3NlcnZlcmlwfToke2dhdGV3YXlpcH06JHtuZXRtYXNrfToke2hvc3RuYW1lfToke25ldGRldn06b2ZmIHBhbmljPTE7IGZpIDsgZmlcMCIJXAotCSJob3N0bmFtZT1DUFVQMFwwIglcCi0JImV0aGFkZHI9MDA6MDA6MDA6MDA6MDA6MDBcMCIJXAotCSJuZXRkZXY9ZXRoMFwwIglcCi0JImJvb3RjbWQ9cnVuIGJvb3RjbWRfbm9yXDAiIFwKKwkiYms9cnVuIGFkZF9tdGQgOyBydW4gYWRkX2NvbnNvbGVzcGVjIDsgYm9vdG0gMjAwMDAwXDAiCQlcCisJImNmMT1kaXNrYm9vdCAyMDAwMDAgMDoxXDAiCQkJCQlcCisJImJvb3RjbWRfY2YxPXJ1biBiY2YxXDAiCQkJCQlcCisJImJjZj1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L2hkYTNcMCIJCQkJXAorCSJib290Y21kX25mcz1ydW4gYm5mc1wwIgkJCQkJXAorCSJub3JhcmdzPXNldGVudiBib290YXJncyByb290PS9kZXYvbXRkYmxvY2szIHJvb3Rmc3R5cGU9Y3JhbWZzICJcCisJCSJwYW5pYz0xXDAiCQkJCQkJXAorCSJib290Y21kX25vcj1jcC5iICR7a2VybmVsX2FkZHJ9IDIwMDAwMCAxMDAwMDA7IgkJXAorCQkJInJ1biBub3JhcmdzIGFkZGlwOyBydW4gYmtcMCIJCQlcCisJImJuZnM9bmZzIDIwMDAwMCAke3Jvb3RwYXRofS9ib290L3VJbWFnZTsiCQkJXAorCQkJInJ1biBuZnNhcmdzIGFkZGlwIDsgcnVuIGJrXDAiCQkJXAorCSJuZnNhcmdzPXNldGVudiBib290YXJncyByb290PS9kZXYvbmZzIHJ3ICIJCQlcCisJCQkJIm5mc3Jvb3Q9JHtzZXJ2ZXJpcH06JHtyb290cGF0aH1cMCIJXAorCSJ0cnlfdXBkYXRlPXVzYiBzdGFydDtzbGVlcCAyO3VzYiBzdGFydDtzbGVlcCAxOyIJCVwKKwkJCSJmYXRsb2FkIHVzYiAwIDJGMDAwMCBQQ1BVVVBEVCAyRkY7dXNiIHN0b3A7IglcCisJCQkic291cmNlIDJGMDAwMFwwIgkJCQlcCisJImVudl9hZGRyPUZFMDYwMDAwXDAiCQkJCQkJXAorCSJrZXJuZWxfYWRkcj1GRTEwMDAwMFwwIgkJCQkJXAorCSJyb290ZnNfYWRkcj1GRTIwMDAwMFwwIgkJCQkJXAorCSJhZGRfbXRkPXNldGVudiBib290YXJncyAke2Jvb3RhcmdzfSBtdGRwYXJ0cz0iCQkJXAorCQkicGh5c19tYXBwZWRfZmxhc2g6Mzg0ayh1KSw2NDBrKGUpLDFtKGspLDMwbShyKVwwIglcCisJImJjZjE9cnVuIGNmMTsgcnVuIGJjZjsgcnVuIGFkZGlwOyBydW4gYmtcMCIJCQlcCisJImFkZF9jb25zb2xlc3BlYz1zZXRlbnYgYm9vdGFyZ3MgJHtib290YXJnc30gIgkJCVwKKwkJCQkiY29uc29sZT0vZGV2L251bGwgcXVpZXRcMCIJCVwKKwkiYWRkaXA9aWYgdGVzdCAtbiAke2V0aGFkZHJ9OyIJCQkJCVwKKwkJInRoZW4gaWYgdGVzdCAtbiAke2lwYWRkcn07IgkJCQlcCisJCQkidGhlbiBzZXRlbnYgYm9vdGFyZ3MgJHtib290YXJnc30gIgkJXAorCQkJCSJpcD0ke2lwYWRkcn06JHtzZXJ2ZXJpcH06JHtnYXRld2F5aXB9OiJcCisJCQkJIiR7bmV0bWFza306JHtob3N0bmFtZX06JHtuZXRkZXZ9Om9mZjsiCVwKKwkJCSJmaTsiCQkJCQkJXAorCQkiZWxzZTsiCQkJCQkJCVwKKwkJCSJzZXRlbnYgYm9vdGFyZ3MgJHtib290YXJnc30gbm9fZXRoYWRkcjsiCVwKKwkJImZpXDAiCQkJCQkJCVwKKwkiaG9zdG5hbWU9Q1BVUDBcMCIJCQkJCQlcCisJImV0aGFkZHI9MDA6MDA6MDA6MDA6MDA6MDBcMCIJCQkJCVwKKwkibmV0ZGV2PWV0aDBcMCIJCQkJCQkJXAorCSJib290Y21kPXJ1biBib290Y21kX25vclwwIiAJCQkJCVwKIAkiIgogLyoKICAqIElQQiBCdXMgY2xvY2tpbmcgY29uZmlndXJhdGlvbi4KQEAgLTIxMiw2ICsyMjgsNyBAQAogI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0NGSQogI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0NGSV9XSURUSAlGTEFTSF9DRklfMTZCSVQKICNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQU5LU19MSVNUCXtDT05GSUdfU1lTX0NTMF9TVEFSVH0KKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQU5LU19TSVpFUwl7Q09ORklHX1NZU19DUzBfU0laRX0KIAogLyoKICAqIEVudmlyb25tZW50IHNldHRpbmdzCkBAIC0yMzMsMTEgKzI1MCwxMCBAQAogCiAvKiBVc2UgU1JBTSB1bnRpbCBSQU0gd2lsbCBiZSBhdmFpbGFibGUgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCU1QQzVYWFhfU1JBTQotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJTVBDNVhYWF9TUkFNX1NJWkUJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJCU1QQzVYWFhfU1JBTV9TSVpFCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNICovCiAKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFICAgIENPTkZJR19TWVNfVEVYVF9CQVNFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYWNhZGlhLmggYi9pbmNsdWRlL2NvbmZpZ3MvYWNhZGlhLmgKaW5kZXggYzFiZDRiZS4uNTU3M2RjNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2FjYWRpYS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hY2FkaWEuaApAQCAtODQsMTAgKzg0LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSCTB4ZjgwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4NDAwMAkJCS8qIDE2SyBvZiBvbmNoaXAgU1JBTQkJKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0RBVEFfQUREUgkvKiBpbnNpZGUgb2YgU1JBTQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJCS8qIHNpemUgZm9yIGluaXRpYWwgZGF0YQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYWN0dXgxLmggYi9pbmNsdWRlL2NvbmZpZ3MvYWN0dXgxLmgKaW5kZXggOTFmNmZmMC4uODg4NmVmZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2FjdHV4MS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hY3R1eDEuaApAQCAtNTUsNyArNTUsNiBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJCTEyOAogCiAvKiBhbGxvdyB0byBvdmVyd3JpdGUgc2VyaWFsIGFuZCBldGhhZGRyICovCiAjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYWN0dXgyLmggYi9pbmNsdWRlL2NvbmZpZ3MvYWN0dXgyLmgKaW5kZXggYjkzNjkzOC4uNzU2Mjc5ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2FjdHV4Mi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hY3R1eDIuaApAQCAtNDYsNyArNDYsNiBAQAogLyogU2l6ZSBvZiBtYWxsb2MoKSBwb29sICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJCTEyOAogCiAvKiBhbGxvdyB0byBvdmVyd3JpdGUgc2VyaWFsIGFuZCBldGhhZGRyICovCiAjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYWN0dXgzLmggYi9pbmNsdWRlL2NvbmZpZ3MvYWN0dXgzLmgKaW5kZXggZjVlZTg5OS4uYWQ5MTczZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2FjdHV4My5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hY3R1eDMuaApAQCAtNDYsNyArNDYsNiBAQAogLyogU2l6ZSBvZiBtYWxsb2MoKSBwb29sICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJCTEyOAogCiAvKiBhbGxvdyB0byBvdmVyd3JpdGUgc2VyaWFsIGFuZCBldGhhZGRyICovCiAjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYWN0dXg0LmggYi9pbmNsdWRlL2NvbmZpZ3MvYWN0dXg0LmgKaW5kZXggOGQ3MGEyNi4uMDQxNDVjMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2FjdHV4NC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hY3R1eDQuaApAQCAtNDYsNyArNDYsNiBAQAogLyogU2l6ZSBvZiBtYWxsb2MoKSBwb29sICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJCTEyOAogCiAvKiBhbGxvdyB0byBvdmVyd3JpdGUgc2VyaWFsIGFuZCBldGhhZGRyICovCiAjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYWV2LmggYi9pbmNsdWRlL2NvbmZpZ3MvYWV2LmgKaW5kZXggMTBmZmIyZS4uZmI5NThmZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2Fldi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hZXYuaApAQCAtMjcxLDE0ICsyNzEsMTMgQEAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCU1QQzVYWFhfU1JBTQogI2lmZGVmIENPTkZJR19QT1NUCiAvKiBwcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIHBvc3Rfd29yZCBhdCBlbmQgb2Ygb24tY2hpcCBTUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9QT1NUX1NJWkUKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9QT1NUX1NJWkUKICNlbHNlCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlNUEM1WFhYX1NSQU1fU0laRQogI2VuZGlmCiAKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCUNPTkZJR19TWVNfVEVYVF9CQVNFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYWZlYjkyNjAuaCBiL2luY2x1ZGUvY29uZmlncy9hZmViOTI2MC5oCmluZGV4IDI0NDg0ZmQuLjljZDBiYzYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hZmViOTI2MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hZmViOTI2MC5oCkBAIC0xNjcsNyArMTY3LDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJUk9VTkQoMyAqIENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0LCAweDEwMDApCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogMTI4IGJ5dGVzIGZvciBpbml0aWFsIGRhdGEgKi8KIAogI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFCSgzMiAqIDEwMjQpCS8qIHJlZ3VsYXIgc3RhY2sgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2FscHIuaCBiL2luY2x1ZGUvY29uZmlncy9hbHByLmgKaW5kZXggZGZlNzgwMi4uZDkzZTUwNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2FscHIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYWxwci5oCkBAIC02NCwxMCArNjQsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX1RFTVBfU1RBQ0tfT0NNICAxCiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUiAgIENPTkZJR19TWVNfSVNSQU1fQkFTRQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgICBDT05GSUdfU1lTX0lTUkFNX0JBU0UgIC8qIEluaXRpYWwgUkFNIGFkZHJlc3MJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgMHgyMDAwCSAgICAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAxMjgJCSAgICAvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhCSovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAgICAweDIwMDAJICAgIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCShDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAtIDB4NCkKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCSAgICAoMjU2ICogMTAyNCkgICAgLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbgkqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2FtMzUxN19ldm0uaCBiL2luY2x1ZGUvY29uZmlncy9hbTM1MTdfZXZtLmgKaW5kZXggYTkwNDVkOC4uOWE5YmE4OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2FtMzUxN19ldm0uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYW0zNTE3X2V2bS5oCkBAIC02MSw3ICs2MSw2IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX0VOVl9TSVpFCQkJKDEyOCA8PCAxMCkJLyogMTI4IEtpQiBzZWN0b3IgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgKDEyOCA8PCAxMCkpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogYnl0ZXMgcmVzZXJ2ZWQgZm9yICovCiAJCQkJCQkvKiBpbml0aWFsIGRhdGEgKi8KIC8qCiAgKiBERFIgcmVsYXRlZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2FtY2MtY29tbW9uLmggYi9pbmNsdWRlL2NvbmZpZ3MvYW1jYy1jb21tb24uaAppbmRleCBiOWYxZjZiLi5iNWQzZTEwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvYW1jYy1jb21tb24uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYW1jYy1jb21tb24uaApAQCAtODEsMTcgKzgxLDYgQEAKICNkZWZpbmUgQ09ORklHX0NNRF9QSU5HCiAjZGVmaW5lIENPTkZJR19DTURfUkVHSU5GTwogCi0jaWYgZGVmaW5lZChDT05GSUdfU1lTX1JBTUJPT1QpCi0vKgotICogRGlzYWJsZSBOT1IgRkxBU0ggY29tbWFuZHMgb24gUkFNLWJvb3RpbmcgdmVyc2lvbi4gT25lIG1haW4gcmVhc29uIGZvciB0aGlzCi0gKiBSQU0tYm9vdGluZyB2ZXJzaW9uIGlzIGJvYXJkcyB3aXRoIE5BTkQgYW5kIHdpdGhvdXQgTk9SLiBUaGlzIGltYWdlIGNhbgotICogYmUgdXNlZCBmb3IgaW5pdGlhbCBOQU5EIHByb2dyYW1taW5nLgotICovCi0jZGVmaW5lIENPTkZJR19TWVNfTk9fRkxBU0gKLSN1bmRlZiBDT05GSUdfQ01EX0ZMQVNICi0jdW5kZWYgQ09ORklHX0NNRF9JTUxTCi0jZW5kaWYKLQogLyoKICAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICAqLwpAQCAtMjgyLDEzICsyNzEsMTMgQEAKIAkibG9hZD10ZnRwIDIwMDAwMCAke3UtYm9vdH1cMCIJCQkJCVwKIAkidXBkYXRlPXByb3RlY3Qgb2ZmICIgeHN0cihDT05GSUdfU1lTX01PTklUT1JfQkFTRSkgIiBGRkZGRkZGRjsiCVwKIAkJImVyYSAiIHhzdHIoQ09ORklHX1NZU19NT05JVE9SX0JBU0UpICIgRkZGRkZGRkY7IgkJXAotCQkiY3AuYiAke2ZpbGVhZGRyfSAiIHhzdHIoQ09ORklHX1NZU19NT05JVE9SX0JBU0UpICIgJHtmaWxlc2l6ZX0iIFwKKwkJImNwLmIgJHtmaWxlYWRkcn0gIiB4c3RyKENPTkZJR19TWVNfTU9OSVRPUl9CQVNFKSAiICR7ZmlsZXNpemV9XDAiIFwKIAkidXBkPXJ1biBsb2FkIHVwZGF0ZVwwIgkJCQkJCVwKIAogI2RlZmluZSBDT05GSUdfQU1DQ19ERUZfRU5WX05BTkRfVVBECQkJCQlcCiAJInUtYm9vdC1uYW5kPSIgeHN0cihDT05GSUdfSE9TVE5BTUUpICIvdS1ib290LW5hbmQuYmluXDAiCVwKIAkibmxvYWQ9dGZ0cCAyMDAwMDAgJHt1LWJvb3QtbmFuZH1cMCIJCQkJXAotCSJudXBkYXRlPW5hbmQgZXJhc2UgMCAxMDAwMDA7bmFuZCB3cml0ZSAyMDAwMDAgMCAxMDAwMDAiCVwKKwkibnVwZGF0ZT1uYW5kIGVyYXNlIDAgMTAwMDAwO25hbmQgd3JpdGUgMjAwMDAwIDAgMTAwMDAwXDAiCVwKIAkibnVwZD1ydW4gbmxvYWQgbnVwZGF0ZVwwIgogCiAjZW5kaWYgLyogX19BTUNDX0NPTU1PTl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYXAzMjVyeGEuaCBiL2luY2x1ZGUvY29uZmlncy9hcDMyNXJ4YS5oCmluZGV4IDgwYTU3OTcuLmU3ZjM3ZjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hcDMyNXJ4YS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hcDMyNXJ4YS5oCkBAIC0xMTIsNyArMTEyLDYgQEAKIC8qIFNpemUgb2YgRFJBTSByZXNlcnZlZCBmb3IgbWFsbG9jKCkgdXNlICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkoMjU2ICogMTAyNCkKIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJKDI1NikKICNkZWZpbmUgQ09ORklHX1NZU19CT09UTUFQU1oJKDggKiAxMDI0ICogMTAyNCkKIAogLyogRkxBU0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9hcG9sbG9uLmggYi9pbmNsdWRlL2NvbmZpZ3MvYXBvbGxvbi5oCmluZGV4IGMxMjk1ZGUuLmFhNzQ0NjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hcG9sbG9uLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2Fwb2xsb24uaApAQCAtNzksNyArNzksNiBAQAogI2RlZmluZSBDT05GSUdfRU5WX1NJWkVfRkxFWCBTWl8yNTZLCiAjZGVmaW5lCUNPTkZJR19TWVNfTUFMTE9DX0xFTgkoQ09ORklHX0VOVl9TSVpFICsgU1pfMU0pCiAvKiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9hcmlhLmggYi9pbmNsdWRlL2NvbmZpZ3MvYXJpYS5oCmluZGV4IGE2M2M0NTMuLmIzY2E4ZDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hcmlhLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2FyaWEuaApAQCAtMzAwLDExICszMDAsMTAgQEAKIAogLyogVXNlIFNSQU0gZm9yIGluaXRpYWwgc3RhY2sgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfU1JBTV9CQVNFCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECQlDT05GSUdfU1lTX1NSQU1fU0laRQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJCUNPTkZJR19TWVNfU1JBTV9TSVpFCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTB4MTAwCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIFwKLQkJCQkJIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIFwKKwkJCQkJIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJCUNPTkZJR19TWVNfVEVYVF9CQVNFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYXJtYWRpbGxvLmggYi9pbmNsdWRlL2NvbmZpZ3MvYXJtYWRpbGxvLmgKaW5kZXggNDllYTNhMS4uZDBkMDk5OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2FybWFkaWxsby5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hcm1hZGlsbG8uaApAQCAtNTEsNyArNTEsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYXNzYWJldC5oIGIvaW5jbHVkZS9jb25maWdzL2Fzc2FiZXQuaAppbmRleCA1OGNkYmQ1Li41Y2QxODM2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvYXNzYWJldC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hc3NhYmV0LmgKQEAgLTQ4LDcgKzQ4LDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTiAgICAgICAgICAoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAgICAxMjgJLyogc2l6ZSByc3J2ZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYXN0cm9fbWNmNTM3M2wuaCBiL2luY2x1ZGUvY29uZmlncy9hc3Ryb19tY2Y1MzczbC5oCmluZGV4IGYyYmMyNmEuLmQ0NjhlNDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hc3Ryb19tY2Y1MzczbC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hc3Ryb19tY2Y1MzczbC5oCkBAIC0zMDAsMTEgKzMwMCwxMCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBpbnRlcm5hbCBTUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDgwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECQkweDgwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCQkweDgwMDAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9DVFJMCTB4MjIxCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gXAotCQkJCQkgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gXAorCQkJCQkgR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyoKQEAgLTM4Nyw5ICszODYsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFTElORV9TSVpFCTE2CiAKICNkZWZpbmUgSUNBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDgpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA4KQogI2RlZmluZSBEQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gNCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDQpCiAjZGVmaW5lIENPTkZJR19TWVNfSUNBQ0hFX0lOVgkJKENGX0NBQ1JfQ0lOVkEpCiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVfQUNSMAkJKENPTkZJR19TWVNfU0RSQU1fQkFTRSB8IFwKIAkJCQkJIENGX0FERFJNQVNLKENPTkZJR19TWVNfU0RSQU1fU0laRSkgfCBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYXQ5MWNhcDlhZGsuaCBiL2luY2x1ZGUvY29uZmlncy9hdDkxY2FwOWFkay5oCmluZGV4IDQ0YzI4NzAuLmNkZTVhZWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hdDkxY2FwOWFkay5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hdDkxY2FwOWFkay5oCkBAIC0yMDksNyArMjA5LDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJUk9VTkQoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQsIDB4MTAwMCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiAxMjggYnl0ZXMgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJKDMyKjEwMjQpCS8qIHJlZ3VsYXIgc3RhY2sgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2F0OTFybTkyMDBkay5oIGIvaW5jbHVkZS9jb25maWdzL2F0OTFybTkyMDBkay5oCmluZGV4IGQzOWU4ZjIuLmZiOWQwYTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hdDkxcm05MjAwZGsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXJtOTIwMGRrLmgKQEAgLTc2LDcgKzc2LDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKICNkZWZpbmUgQ09ORklHX0JBVURSQVRFIDExNTIwMAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXJtOTIwMGVrLmggYi9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXJtOTIwMGVrLmgKaW5kZXggYjM4NjA1Ny4uMTQ1NTlmNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2F0OTFybTkyMDBlay5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hdDkxcm05MjAwZWsuaApAQCAtMjA1LDEwICsyMDUsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCVJPVU5EKDMgKiBDT05GSUdfRU5WX1NJWkUgKyBTWl8xMjhLLCBcCiAJCQkJCSAgICAgU1pfNEspCiAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoQ09ORklHX1NZU19TRFJBTV9CQVNFICsgU1pfNEsgXAotCQkJCQktIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKwkJCQkJLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAogI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFCQlTWl8zMksJLyogcmVndWxhciBzdGFjayAqLwogI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFX0lSUQkJU1pfNEsJLyogVW5zdXJlIGlmIHRvIGJpZyBvciB0byBzbWFsbCovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXNhbTkyNjBlay5oIGIvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05MjYwZWsuaAppbmRleCBiODkyNDJiLi4wMjQwMWI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXNhbTkyNjBlay5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hdDkxc2FtOTI2MGVrLmgKQEAgLTIxMyw3ICsyMTMsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQlST1VORCgzICogQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQsIDB4MTAwMCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiAxMjggYnl0ZXMgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJKDMyKjEwMjQpCS8qIHJlZ3VsYXIgc3RhY2sgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05MjYxZWsuaCBiL2luY2x1ZGUvY29uZmlncy9hdDkxc2FtOTI2MWVrLmgKaW5kZXggZGY4MTgxYi4uMDVlMTJkZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05MjYxZWsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXNhbTkyNjFlay5oCkBAIC0yMzEsNyArMjMxLDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJUk9VTkQoMyAqIENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0LCAweDEwMDApCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogMTI4IGJ5dGVzIGZvciBpbml0aWFsIGRhdGEgKi8KIAogI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFCSgzMioxMDI0KQkvKiByZWd1bGFyIHN0YWNrICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9hdDkxc2FtOTI2M2VrLmggYi9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXNhbTkyNjNlay5oCmluZGV4IDVjYWZhMWUuLjA5MDU2MzggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hdDkxc2FtOTI2M2VrLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05MjYzZWsuaApAQCAtMzQxLDcgKzM0MSw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCVJPVU5EKDMgKiBDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCwgMHgxMDAwKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIDEyOCBieXRlcyBmb3IgaW5pdGlhbCBkYXRhICovCiAKICNkZWZpbmUgQ09ORklHX1NUQUNLU0laRQkoMzIqMTAyNCkJLyogcmVndWxhciBzdGFjayAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXNhbTltMTBnNDVlay5oIGIvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05bTEwZzQ1ZWsuaAppbmRleCA0NGM1NDk2Li42NzI4OGQwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXNhbTltMTBnNDVlay5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9hdDkxc2FtOW0xMGc0NWVrLmgKQEAgLTIxNyw3ICsyMTcsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQlST1VORCgzICogQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQsIDB4MTAwMCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiAxMjggYnl0ZXMgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJKDMyKjEwMjQpCS8qIHJlZ3VsYXIgc3RhY2sgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05cmxlay5oIGIvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05cmxlay5oCmluZGV4IGU4ZmNkNjYuLjIyMDU0Y2YgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hdDkxc2FtOXJsZWsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYXQ5MXNhbTlybGVrLmgKQEAgLTE3Niw3ICsxNzYsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQlST1VORCgzICogQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQsIDB4MTAwMCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiAxMjggYnl0ZXMgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJKDMyKjEwMjQpCS8qIHJlZ3VsYXIgc3RhY2sgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2F0Yy5oIGIvaW5jbHVkZS9jb25maWdzL2F0Yy5oCmluZGV4IDYyZTM4ZTEuLjUzZGEwZjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9hdGMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYXRjLmgKQEAgLTI0NCw5ICsyNDQsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMCAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4IC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMCAgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9iYWxsb29uMy5oIGIvaW5jbHVkZS9jb25maWdzL2JhbGxvb24zLmgKaW5kZXggYWU2MGYyZS4uNjNlNmQ2ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2JhbGxvb24zLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2JhbGxvb24zLmgKQEAgLTMzLDcgKzMzLDYgQEAKICAqLwogI2RlZmluZQlDT05GSUdfRU5WX09WRVJXUklURQogI2RlZmluZQlDT05GSUdfU1lTX01BTExPQ19MRU4JCSgxMjgqMTAyNCkKLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAogI2RlZmluZQlDT05GSUdfQVJDSF9DUFVfSU5JVAogI2RlZmluZQlDT05GSUdfQk9PVENPTU1BTkQJCQkJCQlcCiAJImZwZ2EgbG9hZCAweDAgMHg1MDAwMCAweDYyNjM4OyAiCQkJCVwKQEAgLTEzMyw3ICsxMzIsNyBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJUEhZU19TRFJBTV8xCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9BRERSCQlcCi0JKFBIWVNfU0RSQU1fMSArIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSArIDIwNDgpCisJKFBIWVNfU0RSQU1fMSArIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFICsgMjA0OCkKIAogLyoKICAqIE5PUiBGTEFTSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2JhbWJvby5oIGIvaW5jbHVkZS9jb25maWdzL2JhbWJvby5oCmluZGV4IDFiZGZkOWQuLjdiNjZmYzAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9iYW1ib28uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYmFtYm9vLmgKQEAgLTgwLDkgKzgwLDggQEAKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRENBQ0hFCTEJCS8qIGQtY2FjaGUgYXMgaW5pdCByYW0JKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4NzAwMDAwMDAJLyogRENhY2hlICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECSg0IDw8IDEwKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMjU2CQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCSg0IDw8IDEwKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2JhcmNvLmggYi9pbmNsdWRlL2NvbmZpZ3MvYmFyY28uaAppbmRleCBiNjU2YzAxLi5kY2JhMGNiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvYmFyY28uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYmFyY28uaApAQCAtMTUxLDIwICsxNTEsMTggQEAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJMHgwMDA5MDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1JBTUJPT1QJCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCShDT05GSUdfU1lTX01PTklUT1JfQkFTRSArIENPTkZJR19TWVNfTU9OSVRPUl9MRU4pCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTI1NiAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAjZWxzZQogI3VuZGVmCUNPTkZJR19TWVNfUkFNQk9PVAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkweDAwMDMwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCUNPTkZJR19TWVNfVEVYVF9CQVNFCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2JmNTQ4LWV6a2l0LmggYi9pbmNsdWRlL2NvbmZpZ3MvYmY1NDgtZXpraXQuaAppbmRleCA0NDEyMTc3Li4xYzAzNWNmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvYmY1NDgtZXpraXQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYmY1NDgtZXpraXQuaApAQCAtMTgwLDYgKzE4MCw3IEBACiAgKiBNaXNjIFNldHRpbmdzCiAgKi8KICNkZWZpbmUgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfRgorI2RlZmluZSBDT05GSUdfQk9BUkRfU0laRV9MSU1JVCAkJCgoIDUxMiAqIDEwMjQgKSkKICNkZWZpbmUgQ09ORklHX1JUQ19CRklOCiAjZGVmaW5lIENPTkZJR19VQVJUX0NPTlNPTEUJMQogI2RlZmluZSBDT05GSUdfQkZJTl9TUElfSU1HX1NJWkUgMHg1MDAwMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2JmaW5fYWRpX2NvbW1vbi5oIGIvaW5jbHVkZS9jb25maWdzL2JmaW5fYWRpX2NvbW1vbi5oCmluZGV4IDYwODc4OGEuLjAzYzY0MzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9iZmluX2FkaV9jb21tb24uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYmZpbl9hZGlfY29tbW9uLmgKQEAgLTI5NSw2ICsyOTUsOSBAQAogLyoKICAqIE1pc2MgU2V0dGluZ3MKICAqLworI2lmbmRlZiBDT05GSUdfQk9BUkRfU0laRV9MSU1JVAorIyBkZWZpbmUgQ09ORklHX0JPQVJEX1NJWkVfTElNSVQgJCQoKCAyNTYgKiAxMDI0ICkpCisjZW5kaWYKICNkZWZpbmUgQ09ORklHX0JGSU5fU1BJX0dQSU9fQ1MgLyogT25seSBtYXR0ZXJzIGlmIEJGSU5fU1BJIGlzIGVuYWJsZWQgKi8KICNkZWZpbmUgQ09ORklHX0xaTUEKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2JsdWVzdG9uZS5oIGIvaW5jbHVkZS9jb25maWdzL2JsdWVzdG9uZS5oCmluZGV4IDBiYjk3ZDkuLjNlNjkxZmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9ibHVlc3RvbmUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYmx1ZXN0b25lLmgKQEAgLTY2LDEwICs2Niw5IEBACiAgKiBJbml0aWFsIFJBTSAmIHN0YWNrIHBvaW50ZXIgKHBsYWNlZCBpbiBPQ00pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0JBU0UJLyogT0NNICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECQkoNCA8PCAxMCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTI1NgkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJKDQgPDwgMTApCiAjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCVwKLQkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYnViaW5nYS5oIGIvaW5jbHVkZS9jb25maWdzL2J1YmluZ2EuaAppbmRleCA3MjYyYjNlLi5kYTY3YWUzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvYnViaW5nYS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9idWJpbmdhLmgKQEAgLTIzOCwxMCArMjM4LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSCTB4RjgwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC8qIGluc2lkZSBvZiBTRFJBTQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQgICAgICBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYzJtb24uaCBiL2luY2x1ZGUvY29uZmlncy9jMm1vbi5oCmluZGV4IDEzNTFmMjkuLmYzMjVkMmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9jMm1vbi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9jMm1vbi5oCkBAIC0xNDMsOSArMTQzLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9jYTl4NF9jdF92eHAuaCBiL2luY2x1ZGUvY29uZmlncy9jYTl4NF9jdF92eHAuaAppbmRleCA1NTQ3ZDU1Li42M2YwMDNkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvY2E5eDRfY3RfdnhwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2NhOXg0X2N0X3Z4cC5oCkBAIC00NSw3ICs0NSw2IEBACiAKIC8qIFNpemUgb2YgbWFsbG9jKCkgcG9vbCAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjggKiAxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CiAKICNkZWZpbmUgU0NUTF9CQVNFCQkJMHgxMDAwMTAwMAogI2RlZmluZSBWRVhQUkVTU19GTEFTSFBST0dfRkxWUFBFTgkoMSA8PCAwKQpAQCAtMTE2LDEwICsxMTUsMTAgQEAKIAogLyogYWRkaXRpb25zIGZvciBuZXcgcmVsb2NhdGlvbiBjb2RlICovCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJUEhZU19TRFJBTV8xCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECQkweDEwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCQkweDEwMDAKICNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfU0RSQU1fQkFTRSArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gXAotCQkJCQkgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gXAorCQkJCQkgR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9BRERSCQlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKiBCYXNpYyBlbnZpcm9ubWVudCBzZXR0aW5ncyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2Nhbm1iLmggYi9pbmNsdWRlL2NvbmZpZ3MvY2FubWIuaAppbmRleCBlMWVlMTU4Li5kNGM1YmJkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvY2FubWIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvY2FubWIuaApAQCAtMTU3LDExICsxNTcsMTAgQEAKIAogLyogVXNlIFNSQU0gdW50aWwgUkFNIHdpbGwgYmUgYXZhaWxhYmxlICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglNUEM1WFhYX1NSQU0KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1NJWkUJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJTVBDNVhYWF9TUkFNX1NJWkUJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KIAogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UgICAgQ09ORklHX1NZU19URVhUX0JBU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9jYW55b25sYW5kcy5oIGIvaW5jbHVkZS9jb25maWdzL2NhbnlvbmxhbmRzLmgKaW5kZXggZmNjN2QwZS4uOGMwMzU4MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2NhbnlvbmxhbmRzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2NhbnlvbmxhbmRzLmgKQEAgLTEyNCw5ICsxMjQsOCBAQAogICogSW5pdGlhbCBSQU0gJiBzdGFjayBwb2ludGVyIChwbGFjZWQgaW4gT0NNKQogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0JBU0UJLyogT0NNCQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJKDQgPDwgMTApCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJKDQgPDwgMTApCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvY2VyZjI1MC5oIGIvaW5jbHVkZS9jb25maWdzL2NlcmYyNTAuaAppbmRleCA5OGI2OWUzLi45Njk2NDg3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvY2VyZjI1MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9jZXJmMjUwLmgKQEAgLTM4LDYgKzM4LDcgQEAKICNkZWZpbmUgQ09ORklHX0NFUkYyNTAJCTEJLyogb24gQ2VyZiBQWEEgQm9hcmQJICAgICovCiAjZGVmaW5lIEJPQVJEX0xBVEVfSU5JVAkJMQogI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTM4NDAwCisjZGVmaW5lCUNPTkZJR19TWVNfVEVYVF9CQVNFCTB4MAogCiAjdW5kZWYJQ09ORklHX1VTRV9JUlEJCQkvKiB3ZSBkb24ndCBuZWVkIElSUS9GSVEgc3R1ZmYgKi8KIApAQCAtNDgsNyArNDksNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCSAgICAoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCkBAIC0xNDAsMTUgKzE0MCw5IEBACiAvKgogICogUGh5c2ljYWwgTWVtb3J5IE1hcAogICovCi0jZGVmaW5lIENPTkZJR19OUl9EUkFNX0JBTktTCTQJCQkvKiB3ZSBoYXZlIDIgYmFua3Mgb2YgRFJBTSAqLworI2RlZmluZSBDT05GSUdfTlJfRFJBTV9CQU5LUwkJMQkJLyogd2UgaGF2ZSAxIGJhbmsgb2YgRFJBTSAqLwogI2RlZmluZSBQSFlTX1NEUkFNXzEJCQkweGEwMDAwMDAwCS8qIFNEUkFNIEJhbmsgIzEgKi8KICNkZWZpbmUgUEhZU19TRFJBTV8xX1NJWkUJCTB4MDQwMDAwMDAJLyogNjQgTUIgKi8KLSNkZWZpbmUgUEhZU19TRFJBTV8yCQkJMHhhNDAwMDAwMAkvKiBTRFJBTSBCYW5rICMyICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fMl9TSVpFCQkweDAwMDAwMDAwCS8qIDAgTUIgKi8KLSNkZWZpbmUgUEhZU19TRFJBTV8zCQkJMHhhODAwMDAwMAkvKiBTRFJBTSBCYW5rICMzICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fM19TSVpFCQkweDAwMDAwMDAwCS8qIDAgTUIgKi8KLSNkZWZpbmUgUEhZU19TRFJBTV80CQkJMHhhYzAwMDAwMAkvKiBTRFJBTSBCYW5rICM0ICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fNF9TSVpFCQkweDAwMDAwMDAwCS8qIDAgTUIgKi8KIAogI2RlZmluZSBQSFlTX0ZMQVNIXzEJCQkweDAwMDAwMDAwCS8qIEZsYXNoIEJhbmsgIzEgKi8KICNkZWZpbmUgUEhZU19GTEFTSF8yCQkJMHgwNDAwMDAwMAkvKiBGbGFzaCBCYW5rICMyICovCkBAIC0xNjIsNyArMTU2LDcgQEAKICNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFCQkJUEhZU19GTEFTSF8xCiAKICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQlQSFlTX1NEUkFNXzEKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgKyBQSFlTX1NEUkFNXzEpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUgKyBQSFlTX1NEUkFNXzEpCiAKIC8qCiAgKiBHUElPIHNldHRpbmdzCkBAIC0xODcsNiArMTgxLDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX1BTU1JfVkFMCQkweDIwCiAKKyNkZWZpbmUJQ09ORklHX1NZU19DQ0NSCQkJQ0NDUl9MMjd8Q0NDUl9NMnxDQ0NSX04xMAorI2RlZmluZQlDT05GSUdfU1lTX0NLRU4JCQkweDAKKwogLyoKICAqIE1lbW9yeSBzZXR0aW5ncwogICovCkBAIC0xOTYsNiArMTkzLDggQEAKICNkZWZpbmUgQ09ORklHX1NZU19NRENORkdfVkFMCQkweDAwMDAxQUM5CiAjZGVmaW5lIENPTkZJR19TWVNfTURSRUZSX1ZBTAkJMHgwM0NEQzAxNwogI2RlZmluZSBDT05GSUdfU1lTX01ETVJTX1ZBTAkJMHgwMDAwMDAwMAorI2RlZmluZQlDT05GSUdfU1lTX0ZMWUNORkdfVkFMCQkweDAwMDAwMDAwCisjZGVmaW5lCUNPTkZJR19TWVNfU1hDTkZHX1ZBTAkJMHgwMDAwMDAwMAogCiAvKgogICogUENNQ0lBIGFuZCBDRiBJbnRlcmZhY2VzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvY200MDA4LmggYi9pbmNsdWRlL2NvbmZpZ3MvY200MDA4LmgKaW5kZXggN2VhMWE0Ni4uNmU0YTNiNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2NtNDAwOC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9jbTQwMDguaApAQCAtNDMsNyArNDMsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvY200MXh4LmggYi9pbmNsdWRlL2NvbmZpZ3MvY200MXh4LmgKaW5kZXggZWEzNzRkYS4uZGNhN2Q1NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2NtNDF4eC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9jbTQxeHguaApAQCAtNDMsNyArNDMsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvY201MjAwLmggYi9pbmNsdWRlL2NvbmZpZ3MvY201MjAwLmgKaW5kZXggMWIxMjlhMi4uMGFiZTA5MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2NtNTIwMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9jbTUyMDAuaApAQCAtODAsNyArODAsOSBAQAogI2RlZmluZSBDT05GSUdfUE9TVAkJKENPTkZJR19TWVNfUE9TVF9NRU1PUlkgfCBDT05GSUdfU1lTX1BPU1RfQ1BVIHwgQ09ORklHX1NZU19QT1NUX0kyQykKICNkZWZpbmUgTVBDNVhYWF9TUkFNX1BPU1RfU0laRQkoTVBDNVhYWF9TUkFNX1NJWkUgLSA0KQogLyogTGlzdCBvZiBJMkMgYWRkcmVzc2VzIHRvIGJlIHZlcmlmaWVkIGJ5IFBPU1QgKi8KLSNkZWZpbmUgSTJDX0FERFJfTElTVAkJeyBDT05GSUdfU1lTX0kyQ19TTEFWRSwgQ09ORklHX1NZU19JMkNfSU8sIENPTkZJR19TWVNfSTJDX0VFUFJPTSB9CisjZGVmaW5lIENPTkZJR19TWVNfUE9TVF9JMkNfQUREUlMJe0NPTkZJR19TWVNfSTJDX1NMQVZFLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19JTywJXAorCQkJCQkgQ09ORklHX1NZU19JMkNfRUVQUk9NfQogCiAvKiBkaXNwbGF5IGltYWdlIHRpbWVzdGFtcHMgKi8KICNkZWZpbmUgQ09ORklHX1RJTUVTVEFNUAkxCkBAIC0xNjAsMTMgKzE2MiwxMiBAQAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJTVBDNVhYWF9TUkFNCiAjaWZkZWYgQ09ORklHX1BPU1QKIC8qIHByZXNlcnZlIHNwYWNlIGZvciB0aGUgcG9zdF93b3JkIGF0IGVuZCBvZiBvbi1jaGlwIFNSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1BPU1RfU0laRQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJTVBDNVhYWF9TUkFNX1BPU1RfU0laRQogI2Vsc2UKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1NJWkUKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9TSVpFCiAjZW5kaWYKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX0JPQVJEX1RZUEVTCTEJLyogd2UgdXNlIGJvYXJkX3R5cGUgKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvY21jX3B1Mi5oIGIvaW5jbHVkZS9jb25maWdzL2NtY19wdTIuaAppbmRleCBmZmU4M2YwLi5mZjRmMzA2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvY21jX3B1Mi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9jbWNfcHUyLmgKQEAgLTc2LDcgKzc2LDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKICNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQk5NjAwCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9jbWlfbXBjNXh4LmggYi9pbmNsdWRlL2NvbmZpZ3MvY21pX21wYzV4eC5oCmluZGV4IDg4YTQ1YzMuLjE5OGYzNDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9jbWlfbXBjNXh4LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2NtaV9tcGM1eHguaApAQCAtMTI5LDkgKzEyOSw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJKENPTkZJR19TWVNfSU1NUiArIDB4MDAzZjk4MDApCS8qIFBoeXNpY2FsIHN0YXJ0IGFkcmVzcyBvZiBpbnRlcm5hbCBNUEM1NTUgd3JpdGFibGUgUkFNICovCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECShDT05GSUdfU1lTX0lNTVIgKyAweDAwM2ZmZmZmKQkvKiBQaHlzaWNhbCBlbmQgYWRyZXNzIG9mIGludGVybmFsIE1QQzU1NSB1c2VkIFJBTSBhcmVhCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NAkJCS8qIFNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZ2xvYmFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUikgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpIC8qIE9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgcmFtICovCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkoQ09ORklHX1NZU19JTU1SICsgMHgwMDNmZmZmZikJLyogUGh5c2ljYWwgZW5kIGFkcmVzcyBvZiBpbnRlcm5hbCBNUEM1NTUgdXNlZCBSQU0gYXJlYQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUikgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkgLyogT2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiByYW0gKi8KICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJMHgwMTNmYTAwMAkJLyogUGh5c2ljYWwgc3RhcnQgYWRyZXNzIG9mIGluaXRhbCBzdGFjayAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2NvYnJhNTI3Mi5oIGIvaW5jbHVkZS9jb25maWdzL2NvYnJhNTI3Mi5oCmluZGV4IDE4NzEwZmIuLjUzNDhhZDEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9jb2JyYTUyNzIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvY29icmE1MjcyLmgKQEAgLTI3Niw5ICsyNzYsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBpbnRlcm5hbCBTUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDIwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0JKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gaW50ZXJuYWwgU1JBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzMyLDkgKzMzMSw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVMSU5FX1NJWkUJMTYKIAogI2RlZmluZSBJQ0FDSEVfU1RBVFVTCQkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKLQkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gOCkKKwkJCQkJIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIDgpCiAjZGVmaW5lIERDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA0KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gNCkKICNkZWZpbmUgQ09ORklHX1NZU19JQ0FDSEVfSU5WCQkoQ0ZfQ0FDUl9DSU5WIHwgQ0ZfQ0FDUl9JTlZJKQogI2RlZmluZSBDT05GSUdfU1lTX0NBQ0hFX0FDUjAJCShDT05GSUdfU1lTX1NEUkFNX0JBU0UgfCBcCiAJCQkJCSBDRl9BRERSTUFTSyhDT05GSUdfU1lTX1NEUkFNX1NJWkUpIHwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2NvZ2VudF9tcGM4MjYwLmggYi9pbmNsdWRlL2NvbmZpZ3MvY29nZW50X21wYzgyNjAuaAppbmRleCA4YmZkNzAyLi5kNzdhZjBkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvY29nZW50X21wYzgyNjAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvY29nZW50X21wYzgyNjAuaApAQCAtMjI0LDkgKzIyNCw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2NvZ2VudF9tcGM4eHguaCBiL2luY2x1ZGUvY29uZmlncy9jb2dlbnRfbXBjOHh4LmgKaW5kZXggM2NjOTViNC4uM2VlNGE0MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2NvZ2VudF9tcGM4eHguaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvY29nZW50X21wYzh4eC5oCkBAIC0xNzEsOSArMTcxLDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9jb2xpYnJpX3B4YTI3MC5oIGIvaW5jbHVkZS9jb25maWdzL2NvbGlicmlfcHhhMjcwLmgKaW5kZXggNWY0NTdmOC4uYTUyMzE4OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2NvbGlicmlfcHhhMjcwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2NvbGlicmlfcHhhMjcwLmgKQEAgLTM4LDggKzM4LDcgQEAKICAqLwogI2RlZmluZQlDT05GSUdfRU5WX1NJWkUJCQkweDQwMDAKICNkZWZpbmUJQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKLQorI2RlZmluZQlDT05GSUdfU1lTX1RFWFRfQkFTRQkJMHgwCiAjZGVmaW5lCUNPTkZJR19FTlZfT1ZFUldSSVRFCQkvKiBvdmVycmlkZSBkZWZhdWx0IGVudmlyb25tZW50ICovCiAKICNkZWZpbmUJQ09ORklHX0JPT1RDT01NQU5ECQkJCQkJXApAQCAtMTcwLDcgKzE2OSw3IEBACiAjZGVmaW5lCUNPTkZJR19TWVNfTE9BRF9BRERSCQkoMHhhMTAwMDAwMCkKIAogI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCVBIWVNfU0RSQU1fMQotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShHRU5FUkFURURfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKIAogLyoKICAqIE5PUiBGTEFTSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2NvcmVuZXRfZHMuaCBiL2luY2x1ZGUvY29uZmlncy9jb3JlbmV0X2RzLmgKaW5kZXggYzAyMWQ4Mi4uMmFjNTllNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2NvcmVuZXRfZHMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvY29yZW5ldF9kcy5oCkBAIC04Niw2ICs4Niw3IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTlVNX0FERFJfTUFQCQk2NAkvKiBudW1iZXIgb2YgVExCMSBlbnRyaWVzICovCiAjZW5kaWYKIAorI2RlZmluZSBDT05GSUdfUE9TVCBDT05GSUdfU1lTX1BPU1RfTUVNT1JZCS8qIHRlc3QgUE9TVCBtZW1vcnkgdGVzdCAqLwogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHgwMDIwMDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9FTkQJCTB4MDA0MDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19BTFRfTUVNVEVTVApAQCAtMTI5LDY4ICsxMzAsMTAgQEAKICNkZWZpbmUgQ09ORklHX0REUl9TUEQKICNkZWZpbmUgQ09ORklHX0ZTTF9ERFIzCiAKLSNpZmRlZiBDT05GSUdfRERSX1NQRAogI2RlZmluZSBDT05GSUdfU1lTX1NQRF9CVVNfTlVNCTEKICNkZWZpbmUgU1BEX0VFUFJPTV9BRERSRVNTMQkweDUxCiAjZGVmaW5lIFNQRF9FRVBST01fQUREUkVTUzIJMHg1MgotI2Vsc2UKLSNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9TSVpFCQk0MDk2Ci0KLSNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ1MwX0JORFMJCTB4MDAwMDAwM2YKLSNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ1MxX0JORFMJCTB4MDA0MDAwN2YKLSNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ1MwX0NPTkZJRwkweDgwMDE0MjAyCi0jZGVmaW5lIENPTkZJR19TWVNfRERSX0NTMV9DT05GSUcJMHg4MDAxNDIwMgotI2RlZmluZSBDT05GSUdfU1lTX0REUl9USU1JTkdfMwkJMHgwMTAzMTAwMAotI2RlZmluZSBDT05GSUdfU1lTX0REUl9USU1JTkdfMAkJMHg1NTQ0MDgwNAotI2RlZmluZSBDT05GSUdfU1lTX0REUl9USU1JTkdfMQkJMHg3NDcxM2E2NgotI2RlZmluZSBDT05GSUdfU1lTX0REUl9USU1JTkdfMgkJMHgwZmI4OTExYgotI2RlZmluZSBDT05GSUdfU1lTX0REUl9NT0RFXzEJCTB4MDA0MjE4NTAKLSNkZWZpbmUgQ09ORklHX1NZU19ERFJfTU9ERV8yCQkweDAwMTAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfRERSX01PREVfQ1RSTAkweDAwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfRERSX0lOVEVSVkFMCQkweDEwNDAwMTAwCi0jZGVmaW5lIENPTkZJR19TWVNfRERSX0RBVEFfSU5JVAkweGRlYWRiZWVmCi0jZGVmaW5lIENPTkZJR19TWVNfRERSX0NMS19DVFJMCQkweDAzMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfRERSX1RJTUlOR180CQkweDAwMjIwMDAxCi0jZGVmaW5lIENPTkZJR19TWVNfRERSX1RJTUlOR181CQkweDAzNDAxNTAwCi0jZGVmaW5lIENPTkZJR19TWVNfRERSX1pRX0NOVEwJCTB4ODkwODA2MDAKLSNkZWZpbmUgQ09ORklHX1NZU19ERFJfV1JMVkxfQ05UTAkweDg2NTVhNjA4Ci0jZGVmaW5lIENPTkZJR19TWVNfRERSX0NPTlRST0wJCTB4YzcwNDgwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ09OVFJPTDIJCTB4MjQ0MDAwMTEKLSNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ0RSMQkJMHgwMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0REUl9DRFIyCQkweDAwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfRERSX0VSUl9JTlRfRU4JMHgwMDAwMDAwZAotI2RlZmluZSBDT05GSUdfU1lTX0REUl9FUlJfRElTCQkweDAwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfRERSX1NCRQkJMHgwMDAxMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0REUl9ERUJVR18xOAkJMHg0MDEwMDQwMAotCi0jZGVmaW5lIENPTkZJR19TWVNfRERSMl9DUzBfQk5EUwkweDAwODAwMGJmCi0jZGVmaW5lIENPTkZJR19TWVNfRERSMl9DUzFfQk5EUwkweDAwQzAwMGZmCi0jZGVmaW5lIENPTkZJR19TWVNfRERSMl9DUzBfQ09ORklHCUNPTkZJR19TWVNfRERSX0NTMF9DT05GSUcKLSNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0NTMV9DT05GSUcJQ09ORklHX1NZU19ERFJfQ1MxX0NPTkZJRwotI2RlZmluZSBDT05GSUdfU1lTX0REUjJfVElNSU5HXzMJQ09ORklHX1NZU19ERFJfVElNSU5HXzMKLSNkZWZpbmUgQ09ORklHX1NZU19ERFIyX1RJTUlOR18wCUNPTkZJR19TWVNfRERSX1RJTUlOR18wCi0jZGVmaW5lIENPTkZJR19TWVNfRERSMl9USU1JTkdfMQlDT05GSUdfU1lTX0REUl9USU1JTkdfMQotI2RlZmluZSBDT05GSUdfU1lTX0REUjJfVElNSU5HXzIJQ09ORklHX1NZU19ERFJfVElNSU5HXzIKLSNkZWZpbmUgQ09ORklHX1NZU19ERFIyX01PREVfMQkJQ09ORklHX1NZU19ERFJfTU9ERV8xCi0jZGVmaW5lIENPTkZJR19TWVNfRERSMl9NT0RFXzIJCUNPTkZJR19TWVNfRERSX01PREVfMgotI2RlZmluZSBDT05GSUdfU1lTX0REUjJfTU9ERV9DVFJMCUNPTkZJR19TWVNfRERSX01PREVfQ1RSTAotI2RlZmluZSBDT05GSUdfU1lTX0REUjJfSU5URVJWQUwJQ09ORklHX1NZU19ERFJfSU5URVJWQUwKLSNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0RBVEFfSU5JVAlDT05GSUdfU1lTX0REUl9EQVRBX0lOSVQKLSNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0NMS19DVFJMCUNPTkZJR19TWVNfRERSX0NMS19DVFJMCi0jZGVmaW5lIENPTkZJR19TWVNfRERSMl9USU1JTkdfNAlDT05GSUdfU1lTX0REUl9USU1JTkdfNAotI2RlZmluZSBDT05GSUdfU1lTX0REUjJfVElNSU5HXzUJQ09ORklHX1NZU19ERFJfVElNSU5HXzUKLSNkZWZpbmUgQ09ORklHX1NZU19ERFIyX1pRX0NOVEwJCUNPTkZJR19TWVNfRERSX1pRX0NOVEwKLSNkZWZpbmUgQ09ORklHX1NZU19ERFIyX1dSTFZMX0NOVEwJQ09ORklHX1NZU19ERFJfV1JMVkxfQ05UTAotI2RlZmluZSBDT05GSUdfU1lTX0REUjJfQ09OVFJPTAkJQ09ORklHX1NZU19ERFJfQ09OVFJPTAotI2RlZmluZSBDT05GSUdfU1lTX0REUjJfQ09OVFJPTDIJQ09ORklHX1NZU19ERFJfQ09OVFJPTDIKLSNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0NEUjEJCUNPTkZJR19TWVNfRERSX0NEUjEKLSNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0NEUjIJCUNPTkZJR19TWVNfRERSX0NEUjIKLSNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0VSUl9JTlRfRU4JQ09ORklHX1NZU19ERFJfRVJSX0lOVF9FTgotI2RlZmluZSBDT05GSUdfU1lTX0REUjJfRVJSX0RJUwkJQ09ORklHX1NZU19ERFJfRVJSX0RJUwotI2RlZmluZSBDT05GSUdfU1lTX0REUjJfU0JFCQlDT05GSUdfU1lTX0REUl9TQkUKLSNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0RFQlVHXzE4CUNPTkZJR19TWVNfRERSX0RFQlVHXzE4Ci0KLSNlbmRpZgorI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX1NJWkUJNDA5NgkvKiBmb3IgZml4ZWQgcGFyYW1ldGVyIHVzZSAqLwogCiAvKgogICogTG9jYWwgQnVzIERlZmluaXRpb25zCkBAIC0yNjgsMTAgKzIxMSw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTX0hJR0ggMAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFJfUEhZU19MT1cgQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVMKICNlbmRpZgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJMHgwMDAwNDAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJCTB4MDAwMDQwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDUxMiAqIDEwMjQpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvY3BjaTUyMDAuaCBiL2luY2x1ZGUvY29uZmlncy9jcGNpNTIwMC5oCmluZGV4IGE4NjUyOTYuLmMxNzQyYzEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9jcGNpNTIwMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9jcGNpNTIwMC5oCkBAIC0yMzUsMTAgKzIzNSw5IEBACiAKIC8qIFVzZSBTUkFNIHVudGlsIFJBTSB3aWxsIGJlIGF2YWlsYWJsZSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJTVBDNVhYWF9TUkFNCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9TSVpFCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9TSVpFCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRSAgICBDT05GSUdfU1lTX1RFWFRfQkFTRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2NwdTkyNjAuaCBiL2luY2x1ZGUvY29uZmlncy9jcHU5MjYwLmgKaW5kZXggZmI2Zjc5YS4uZDIzOTQyMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2NwdTkyNjAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvY3B1OTI2MC5oCkBAIC00NDUsNyArNDQ1LDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCVwKIAkJUk9VTkQoMyAqIENPTkZJR19FTlZfU0laRSArIDEyOCAqIDEwMjQsIDB4MTAwMCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAogCiAjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJCSgzMiAqIDEwMjQpCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9jcHVhdDkxLmggYi9pbmNsdWRlL2NvbmZpZ3MvY3B1YXQ5MS5oCmluZGV4IDllZjQ1MjMuLjVmNDA5MDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9jcHVhdDkxLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2NwdWF0OTEuaApAQCAtMjAwLDcgKzIwMCw2IEBACiAjZGVmaW5lIENPTkZJR19TWVNfSFpfQ0xPQ0sJCShBVDkxQ19NQVNURVJfQ0xPQ0sgLyAyKQogCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArIDEyOCAqIDEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKICNkZWZpbmUgQ09ORklHX1NUQUNLU0laRQkJKDMyICogMTAyNCkKIAogI2lmIGRlZmluZWQoQ09ORklHX1VTRV9JUlEpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvY3JhZGxlLmggYi9pbmNsdWRlL2NvbmZpZ3MvY3JhZGxlLmgKaW5kZXggZDFjMWE0OC4uYzIxYWYzOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2NyYWRsZS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9jcmFkbGUuaApAQCAtMzksMTIgKzM5LDExIEBACiAKIC8qIHdlIHdpbGwgbmV2ZXIgZW5hYmxlIGRjYWNoZSwgYmVjYXVzZSB3ZSBoYXZlIHRvIHNldHVwIE1NVSBmaXJzdCAqLwogI2RlZmluZSBDT05GSUdfU1lTX05PX0RDQUNIRQotCisjZGVmaW5lCUNPTkZJR19TWVNfVEVYVF9CQVNFCQkweDAKIC8qCiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKQEAgLTEyNiwxNSArMTI1LDkgQEAKIC8qCiAgKiBQaHlzaWNhbCBNZW1vcnkgTWFwCiAgKi8KLSNkZWZpbmUgQ09ORklHX05SX0RSQU1fQkFOS1MgICAgNCAgICAgICAgICAvKiB3ZSBoYXZlIDIgYmFua3Mgb2YgRFJBTSAqLworI2RlZmluZSBDT05GSUdfTlJfRFJBTV9CQU5LUyAgICAxICAgICAgICAgIC8qIHdlIGhhdmUgMSBiYW5rIG9mIERSQU0gKi8KICNkZWZpbmUgUEhZU19TRFJBTV8xICAgICAgICAgICAgMHhhMDAwMDAwMCAvKiBTRFJBTSBCYW5rICMxICovCiAjZGVmaW5lIFBIWVNfU0RSQU1fMV9TSVpFICAgICAgIDB4MDEwMDAwMDAgLyogNjQgTUIgKi8KLSNkZWZpbmUgUEhZU19TRFJBTV8yICAgICAgICAgICAgMHhhNDAwMDAwMCAvKiBTRFJBTSBCYW5rICMyICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fMl9TSVpFICAgICAgIDB4MDAwMDAwMDAgLyogMCBNQiAqLwotI2RlZmluZSBQSFlTX1NEUkFNXzMgICAgICAgICAgICAweGE4MDAwMDAwIC8qIFNEUkFNIEJhbmsgIzMgKi8KLSNkZWZpbmUgUEhZU19TRFJBTV8zX1NJWkUgICAgICAgMHgwMDAwMDAwMCAvKiAwIE1CICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fNCAgICAgICAgICAgIDB4YWMwMDAwMDAgLyogU0RSQU0gQmFuayAjNCAqLwotI2RlZmluZSBQSFlTX1NEUkFNXzRfU0laRSAgICAgICAweDAwMDAwMDAwIC8qIDAgTUIgKi8KIAogI2RlZmluZSBQSFlTX0ZMQVNIXzEgICAgICAgICAgICAweDAwMDAwMDAwIC8qIEZsYXNoIEJhbmsgIzEgKi8KICNkZWZpbmUgUEhZU19GTEFTSF8yICAgICAgICAgICAgMHgwNDAwMDAwMCAvKiBGbGFzaCBCYW5rICMxICovCkBAIC0xNDYsNyArMTM5LDcgQEAKICNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFICAgICAgICAgIFBIWVNfRkxBU0hfMQogCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJUEhZU19TRFJBTV8xCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICsgUEhZU19TRFJBTV8xKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFICsgUEhZU19TRFJBTV8xKQogCiAvKgogICogRkxBU0ggYW5kIGVudmlyb25tZW50IG9yZ2FuaXphdGlvbgpAQCAtMjg5LDkgKzI4Miw5IEBACiAgKiBDbG9ja3MsIHBvd2VyIGNvbnRyb2wgYW5kIGludGVycnVwdHMKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX1BTU1JfVkFMICAgICAgICAweDAwMDAwMDIwCi0jZGVmaW5lIENPTkZJR19TWVNfQ0NDUl9WQUwgICAgICAgIDB4MDAwMDAxNDEgIC8qIDEwMCBNSHogbWVtb3J5LCAyMDAgTUh6IENQVSAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19DS0VOX1ZBTCAgICAgICAgMHgwMDAwMDA2MCAgLyogRkZVQVJUIGFuZCBTVFVBUlQgZW5hYmxlZCAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lDTVJfVkFMICAgICAgICAweDAwMDAwMDAwICAvKiBObyBpbnRlcnJ1cHRzIGVuYWJsZWQgICAgICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfQ0NDUiAgICAgICAgMHgwMDAwMDE0MSAgLyogMTAwIE1IeiBtZW1vcnksIDIwMCBNSHogQ1BVICAqLworI2RlZmluZSBDT05GSUdfU1lTX0NLRU4gICAgICAgIDB4MDAwMDAwNjAgIC8qIEZGVUFSVCBhbmQgU1RVQVJUIGVuYWJsZWQgICAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JQ01SICAgICAgICAweDAwMDAwMDAwICAvKiBObyBpbnRlcnJ1cHRzIGVuYWJsZWQgICAgICAgICovCiAKIC8qIEZJWE1FCiAgKgpAQCAtMzE5LDYgKzMxMiw4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTURNUlNfVkFMICAgICAgIDB4MDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NRFJFRlJfVkFMICAgICAgMHgwMDQwMzAxOCAgLyogSW5pdGlhbCBzZXR0aW5nLCBpbmRpdmlkdWFsIGJpdHMgc2V0IGluIGxvd2xldmVsX2luaXQuUyAqLwogI2VuZGlmCisjZGVmaW5lCUNPTkZJR19TWVNfRkxZQ05GR19WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUJQ09ORklHX1NZU19TWENORkdfVkFMCQkweDAwMDAwMDAwCiAKIC8qCiAgKiBQQ01DSUEgYW5kIENGIEludGVyZmFjZXMgKE5PVCBVU0VELCB0aGVzZSB2YWx1ZXMgZnJvbSBsdWJib2NrIGluaXQpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvY3NiMjI2LmggYi9pbmNsdWRlL2NvbmZpZ3MvY3NiMjI2LmgKaW5kZXggYWUwNTczNC4uNTA1NzQwYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2NzYjIyNi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9jc2IyMjYuaApAQCAtNDUsNyArNDUsNyBAQAogCiAvKiB3ZSB3aWxsIG5ldmVyIGVuYWJsZSBkY2FjaGUsIGJlY2F1c2Ugd2UgaGF2ZSB0byBzZXR1cCBNTVUgZmlyc3QgKi8KICNkZWZpbmUgQ09ORklHX1NZU19OT19EQ0FDSEUKLQorI2RlZmluZQlDT05GSUdfU1lTX1RFWFRfQkFTRQkweDAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCiAgKi8KQEAgLTExNyw3ICsxMTcsNiBAQAogICoKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCSgxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKICNkZWZpbmUgQ09ORklHX1NZU19MT05HSEVMUAkJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeSAgICAgICAgICovCiAjZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUCQkidWJvb3Q+ICIJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAgICAgICAqLwpAQCAtMTgyLDcgKzE4MSw3IEBACiAjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQkFTRSAgICAgICAgICBQSFlTX0ZMQVNIXzEKIAogI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCVBIWVNfU0RSQU1fMQotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShHRU5FUkFURURfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKIAogIyBpZiAwCiAvKiBGSVhNRTogc3dpdGNoIHRvIF9kb2N1bWVudGVkXyByZWdpc3RlcnMgKi8KQEAgLTQ1OCw2ICs0NTcsOSBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfUFNTUl9WQUwgICAgICAgIDB4MjAKIAorI2RlZmluZQlDT05GSUdfU1lTX0NDQ1IJCQlDQ0NSX0wyN3xDQ0NSX00yfENDQ1JfTjEwCisjZGVmaW5lCUNPTkZJR19TWVNfQ0tFTgkJCTB4MAorCiAvKgogICogTWVtb3J5IHNldHRpbmdzCiAgKi8KQEAgLTQ2OCw2ICs0NzAsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX01EQ05GR19WQUwgICAgICAgICAgMHgwOWE5MDlhOQogI2RlZmluZSBDT05GSUdfU1lTX01EUkVGUl9WQUwgICAgICAgICAgMHgwMzhmZjAzMAogI2RlZmluZSBDT05GSUdfU1lTX01ETVJTX1ZBTCAgICAgICAgICAgMHgwMDIyMDAyMgorI2RlZmluZQlDT05GSUdfU1lTX0ZMWUNORkdfVkFMCQkweDAwMDAwMDAwCisjZGVmaW5lCUNPTkZJR19TWVNfU1hDTkZHX1ZBTAkJMHgwMDAwMDAwMAogCiAvKgogICogUENNQ0lBIGFuZCBDRiBJbnRlcmZhY2VzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvY3NiMjcyLmggYi9pbmNsdWRlL2NvbmZpZ3MvY3NiMjcyLmgKaW5kZXggYWNkOWM5My4uMGVhMzRiOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2NzYjI3Mi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9jc2IyNzIuaApAQCAtMjkzLDkgKzI5Myw4IEBACiAgKgogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIgLyogaW5zaWRlIG9mIG9uLWNoaXAgU1JBTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAvKiBieXRlIHNpemUgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2NzYjQ3Mi5oIGIvaW5jbHVkZS9jb25maWdzL2NzYjQ3Mi5oCmluZGV4IDY5YWJiMTYuLjIzNzMxNjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9jc2I0NzIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvY3NiNDcyLmgKQEAgLTI5Miw5ICsyOTIsOCBAQAogICoKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC8qIGluc2lkZSBvZiBvbi1jaGlwIFNSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjggLyogYnl0ZSBzaXplIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9jc2I2MzcuaCBiL2luY2x1ZGUvY29uZmlncy9jc2I2MzcuaAppbmRleCBlZmEyNzgwLi5mOTJmM2M3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvY3NiNjM3LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2NzYjYzNy5oCkBAIC03Niw3ICs3Niw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAjZGVmaW5lIENPTkZJR19CQVVEUkFURSAxMTUyMDAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2RhODMwZXZtLmggYi9pbmNsdWRlL2NvbmZpZ3MvZGE4MzBldm0uaAppbmRleCAxNjBlY2UyLi45MDZiOGU3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZGE4MzBldm0uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZGE4MzBldm0uaApAQCAtNDIsMTIgKzQyLDEyIEBACiAjZGVmaW5lIENPTkZJR19TWVNfSFoJCQkxMDAwCiAjZGVmaW5lIENPTkZJR19TS0lQX0xPV0xFVkVMX0lOSVQKICNkZWZpbmUgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QJLyogdG8gYSBwcm9wZXIgYWRkcmVzcywgaW5pdCBkb25lICovCisjZGVmaW5lIENPTkZJR19TWVNfVEVYVF9CQVNFCQkweGMxMDgwMDAwCiAKIC8qCiAgKiBNZW1vcnkgSW5mbwogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkoMHgxMDAwMCArIDEqMTAyNCoxMDI0KSAvKiBtYWxsb2MoKSBsZW4gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAvKiByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAjZGVmaW5lIFBIWVNfU0RSQU1fMQkJREFWSU5DSV9ERFJfRU1JRl9EQVRBX0JBU0UgLyogRERSIFN0YXJ0ICovCiAjZGVmaW5lIFBIWVNfU0RSQU1fMV9TSVpFCSg2NCA8PCAyMCkgLyogU0RSQU0gc2l6ZSA2NE1CICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9TVEFSVAlQSFlTX1NEUkFNXzEgLyogbWVtdGVzdCBzdGFydCBhZGRyICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZGE4NTBldm0uaCBiL2luY2x1ZGUvY29uZmlncy9kYTg1MGV2bS5oCmluZGV4IDdiZjYzMzYuLjdiMDRiZTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9kYTg1MGV2bS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9kYTg1MGV2bS5oCkBAIC00MCwxMiArNDAsMTIgQEAKICNkZWZpbmUgQ09ORklHX1NZU19IWl9DTE9DSwkJY2xrX2dldChEQVZJTkNJX0FVWENMS19DTEtJRCkKICNkZWZpbmUgQ09ORklHX1NZU19IWgkJCTEwMDAKICNkZWZpbmUgQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVAorI2RlZmluZSBDT05GSUdfU1lTX1RFWFRfQkFTRQkJMHhjMTA4MDAwMAogCiAvKgogICogTWVtb3J5IEluZm8KICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JKDB4MTAwMDAgKyAxKjEwMjQqMTAyNCkgLyogbWFsbG9jKCkgbGVuICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjggLyogcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogI2RlZmluZSBQSFlTX1NEUkFNXzEJCURBVklOQ0lfRERSX0VNSUZfREFUQV9CQVNFIC8qIEREUiBTdGFydCAqLwogI2RlZmluZSBQSFlTX1NEUkFNXzFfU0laRQkoNjQgPDwgMjApIC8qIFNEUkFNIHNpemUgNjRNQiAqLwogI2RlZmluZSBDT05GSUdfTUFYX1JBTV9CQU5LX1NJWkUgKDUxMiA8PCAyMCkgLyogbWF4IHNpemUgZnJvbSBTUFJTNTg2Ki8KQEAgLTE5Miw1ICsxOTIsNSBAQAogLyogYWRkaXRpb25zIGZvciBuZXcgcmVsb2NhdGlvbiBjb2RlLCBtdXN0IGFkZGVkIHRvIGFsbCBib2FyZHMgKi8KICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQkweGMwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoQ09ORklHX1NZU19TRFJBTV9CQVNFICsgMHgxMDAwIC0gLyogRml4IHRoaXMgKi8gXAotCQkJCQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisJCQkJCUdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2VuZGlmIC8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX2RtMzU1ZXZtLmggYi9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9kbTM1NWV2bS5oCmluZGV4IDM3MDExYzAuLmQ0YzM2OTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX2RtMzU1ZXZtLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfZG0zNTVldm0uaApAQCAtMTUxLDcgKzE1MSw2IEBACiAvKiBVLUJvb3QgbWVtb3J5IGNvbmZpZ3VyYXRpb24gKi8KICNkZWZpbmUgQ09ORklHX1NUQUNLU0laRQkJKDI1NiA8PCAxMCkJLyogMjU2IEtpQiAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCSgxIDw8IDIwKQkvKiAxIE1pQiAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CQkvKiBmb3IgaW5pdGlhbCBkYXRhICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9TVEFSVAkweDg3MDAwMDAwCS8qIHBoeXNpY2FsIGFkZHJlc3MgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJMHg4ODAwMDAwMAkvKiB0ZXN0IDE2TUIgUkFNICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX2RtMzU1bGVvcGFyZC5oIGIvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfZG0zNTVsZW9wYXJkLmgKaW5kZXggZTA5ZmI3NS4uNGIxZjAyOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfZG0zNTVsZW9wYXJkLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfZG0zNTVsZW9wYXJkLmgKQEAgLTEzNCw3ICsxMzQsNiBAQAogLyogVS1Cb290IG1lbW9yeSBjb25maWd1cmF0aW9uICovCiAjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJCSgyNTYgPDwgMTApCS8qIDI1NiBLaUIgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMSA8PCAyMCkJLyogMSBNaUIgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogZm9yIGluaXRpYWwgZGF0YSAqLwogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHg4NzAwMDAwMAkvKiBwaHlzaWNhbCBhZGRyZXNzICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9FTkQJCTB4ODgwMDAwMDAJLyogdGVzdCAxNk1CIFJBTSAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9kbTM2NWV2bS5oIGIvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfZG0zNjVldm0uaAppbmRleCAyYzNkODhkLi4wNGI2MDQ0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9kbTM2NWV2bS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX2RtMzY1ZXZtLmgKQEAgLTE4Myw3ICsxODMsNiBAQAogLyogVS1Cb290IG1lbW9yeSBjb25maWd1cmF0aW9uICovCiAjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJCSgyNTYgPDwgMTApCS8qIDI1NiBLaUIgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMSA8PCAyMCkJLyogMSBNaUIgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogZm9yIGluaXRpYWwgZGF0YSAqLwogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHg4NzAwMDAwMAkvKiBwaHlzaWNhbCBhZGRyZXNzICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9FTkQJCTB4ODgwMDAwMDAJLyogdGVzdCAxNk1CIFJBTSAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9kbTY0Njdldm0uaCBiL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX2RtNjQ2N2V2bS5oCmluZGV4IGRkYzU5OTAuLjZiNWQ4NjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX2RtNjQ2N2V2bS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX2RtNjQ2N2V2bS5oCkBAIC00MSw3ICs0MSw2IEBACiAKIC8qIE1lbW9yeSBJbmZvICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDEgPDwgMjApCS8qIDEgTWlCICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJCS8qIGluaXRpYWwgZGF0YSAqLwogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHg4MDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDgxMDAwMDAwCS8qIDE2TUIgUkFNIHRlc3QgKi8KICNkZWZpbmUgQ09ORklHX05SX0RSQU1fQkFOS1MJCTEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX2R2ZXZtLmggYi9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9kdmV2bS5oCmluZGV4IGFhYjJhZmEuLmVjMDVhYmEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX2R2ZXZtLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfZHZldm0uaApAQCAtNzIsNyArNzIsNiBAQAogLyogTWVtb3J5IEluZm8gKi8KIC8qPT09PT09PT09PT09PSovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDB4MTAwMDAgKyAxMjgqMTAyNCkJLyogbWFsbG9jKCkgbGVuICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJCS8qIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCTB4ODAwMDAwMDAJLyogbWVtdGVzdCBzdGFydCBhZGRyZXNzICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9FTkQJCTB4ODEwMDAwMDAJLyogMTZNQiBSQU0gdGVzdCAqLwogI2RlZmluZSBDT05GSUdfTlJfRFJBTV9CQU5LUwkxCQkvKiB3ZSBoYXZlIDEgYmFuayBvZiBEUkFNICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZGF2aW5jaV9zY2htb29naWUuaCBiL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX3NjaG1vb2dpZS5oCmluZGV4IDA0Y2RjMjEuLjQwOWM1YTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX3NjaG1vb2dpZS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX3NjaG1vb2dpZS5oCkBAIC0zOSw3ICszOSw2IEBACiAvKiBNZW1vcnkgSW5mbyAqLwogLyo9PT09PT09PT09PT09Ki8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMHgxMDAwMCArIDI1NioxMDI0KQkvKiBtYWxsb2MoKSBsZW4gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHg4MDAwMDAwMAkvKiBtZW10ZXN0IHN0YXJ0IGFkZHJlc3MgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJMHg4MTAwMDAwMAkvKiAxNk1CIFJBTSB0ZXN0ICovCiAjZGVmaW5lIENPTkZJR19OUl9EUkFNX0JBTktTCTEJCS8qIHdlIGhhdmUgMSBiYW5rIG9mIERSQU0gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX3NmZnNkci5oIGIvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfc2Zmc2RyLmgKaW5kZXggZjRlMTdmOC4uYzdlMGU1NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfc2Zmc2RyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfc2Zmc2RyLmgKQEAgLTQyLDcgKzQyLDYgQEAKICNkZWZpbmUgQ09ORklHX1NZU19FRVBST01fUEFHRV9XUklURV9ERUxBWV9NUwkyMAogLyogTWVtb3J5IEluZm8gKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMHgxMDAwMCArIDI1NioxMDI0KQkvKiBtYWxsb2MoKSBsZW4gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHg4MDAwMDAwMAkvKiBtZW10ZXN0IHN0YXJ0IGFkZHJlc3MgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJMHg4MTAwMDAwMAkvKiAxNk1CIFJBTSB0ZXN0ICovCiAjZGVmaW5lIENPTkZJR19OUl9EUkFNX0JBTktTCTEJCS8qIHdlIGhhdmUgMSBiYW5rIG9mIERSQU0gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9kYXZpbmNpX3NvbmF0YS5oIGIvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfc29uYXRhLmgKaW5kZXggMTc0NjQ5NS4uMzAzNWY3OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfc29uYXRhLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2RhdmluY2lfc29uYXRhLmgKQEAgLTcyLDcgKzcyLDYgQEAKIC8qIE1lbW9yeSBJbmZvICovCiAvKj09PT09PT09PT09PT0qLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCSgweDEwMDAwICsgMTI4KjEwMjQpCS8qIG1hbGxvYygpIGxlbiAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CQkvKiByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9TVEFSVAkweDgwMDAwMDAwCS8qIG1lbXRlc3Qgc3RhcnQgYWRkcmVzcyAqLwogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDgxMDAwMDAwCS8qIDE2TUIgUkFNIHRlc3QgKi8KICNkZWZpbmUgQ09ORklHX05SX0RSQU1fQkFOS1MJMQkJLyogd2UgaGF2ZSAxIGJhbmsgb2YgRFJBTSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2RlYnJpcy5oIGIvaW5jbHVkZS9jb25maWdzL2RlYnJpcy5oCmluZGV4IDE4ODA2MWUuLjdhZDM2YTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9kZWJyaXMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZGVicmlzLmgKQEAgLTE5OSwyMSArMTk5LDE4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCTB4MDAwOTAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19SQU1CT09UCQkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkoQ09ORklHX1NZU19NT05JVE9SX0JBU0UgKyBDT05GSUdfU1lTX01PTklUT1JfTEVOKQotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogI2Vsc2UKICN1bmRlZglDT05GSUdfU1lTX1JBTUJPT1QKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJMHgwMDA0MDAwMAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlDT05GSUdfU1lTX1RFWFRfQkFTRQogCi0vKiNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgIDI1NiovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgICAgIDB4NDAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgICAweDEwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICAgICAgMHgxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZGVsdGEuaCBiL2luY2x1ZGUvY29uZmlncy9kZWx0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTNhY2JmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvY29uZmlncy9kZWx0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLS8qCi0gKiBDb25maWd1YXRpb24gc2V0dGluZ3MgZm9yIHRoZSBEZWx0YSBib2FyZC4KLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi0jaWZuZGVmIF9fQ09ORklHX0gKLSNkZWZpbmUgX19DT05GSUdfSAotCi0vKgotICogSGlnaCBMZXZlbCBDb25maWd1cmF0aW9uIE9wdGlvbnMKLSAqIChlYXN5IHRvIGNoYW5nZSkKLSAqLwotI2RlZmluZSBDT05GSUdfQ1BVX01PTkFIQU5TCTEJLyogSW50ZWwgTW9uYWhhbiBDUFUgICAgKi8KLSNkZWZpbmUJQ09ORklHX0NQVV9QWEEzMjAKLSNkZWZpbmUgQ09ORklHX0RFTFRBCQkxCS8qIERlbHRhIGJvYXJkICAgICAgICovCi0KLS8qICNkZWZpbmUgQ09ORklHX0xDRAkJMSAqLwotI2lmZGVmIENPTkZJR19MQ0QKLSNkZWZpbmUgQ09ORklHX1NIQVJQX0xNOFYzMQotI2VuZGlmCi0jZGVmaW5lIEJPQVJEX0xBVEVfSU5JVAkJMQotCi0jdW5kZWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QKLSN1bmRlZiBDT05GSUdfVVNFX0lSUQkJCS8qIHdlIGRvbid0IG5lZWQgSVJRL0ZJUSBzdHVmZiAqLwotCi0vKiB3ZSB3aWxsIG5ldmVyIGVuYWJsZSBkY2FjaGUsIGJlY2F1c2Ugd2UgaGF2ZSB0byBzZXR1cCBNTVUgZmlyc3QgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19OT19EQ0FDSEUKLQotLyoKLSAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAotICovCi0jZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkgICAgKENPTkZJR19FTlZfU0laRSArIDI1NioxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotCi0vKgotICogSGFyZHdhcmUgZHJpdmVycwotICovCi0jdW5kZWYgVFVSTl9PTl9FVEhFUk5FVAotI2lmZGVmIFRVUk5fT05fRVRIRVJORVQKLSMgZGVmaW5lIENPTkZJR19EUklWRVJfU01DOTExMTEgMQotIyBkZWZpbmUgQ09ORklHX1NNQzkxMTExX0JBU0UgICAweDE0MDAwMzAwCi0jIGRlZmluZSBDT05GSUdfU01DOTExMTFfRVhUX1BIWQotIyBkZWZpbmUgQ09ORklHX1NNQ19VU0VfMzJfQklUCi0jIHVuZGVmIENPTkZJR19TTUNfVVNFX0lPRlVOQ1MgICAgICAgICAgLyoganVzdCBmb3IgdXNlIHdpdGggdGhlIGtlcm5lbCAqLwotI2VuZGlmCi0KLSNkZWZpbmUgQ09ORklHX0hBUkRfSTJDCQkxCS8qIHJlcXVpcmVkIGZvciBEQTkwMzAgYWNjZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfSTJDX1NQRUVECQk0MDAwMDAJLyogSTJDIHNwZWVkICovCi0jZGVmaW5lIENPTkZJR19TWVNfSTJDX1NMQVZFCQkxCS8qIEkyQyBjb250cm9sbGVycyBhZGRyZXNzICovCi0jZGVmaW5lIERBOTAzMF9JMkNfQUREUgkJMHg0OQkvKiBJMkMgYWRkcmVzcyBvZiBEQTkwMzAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19EQTkwMzBfRVhUT05fREVMQVkJMTAwMDAwCS8qIHdhaXQgeCB1cyBhZnRlciBEQTkwMzAgcmVzZXQgdmlhIEVYVE9OICovCi0jZGVmaW5lIENPTkZJR19TWVNfSTJDX0lOSVRfQk9BUkQJMQotLyogI2RlZmluZSBDT05GSUdfSFdfV0FUQ0hET0cJMQkvXCogUmVxdWlyZWQgZm9yIGhpdHRpbmcgdGhlIERBOTAzMCBXRCAqXC8gKi8KLQotI2RlZmluZSBERUxUQV9DSEVDS19LRVlCRAkxCS8qIGNoZWNrIGZvciBrZXlzIHByZXNzZWQgZHVyaW5nIGJvb3QgKi8KLSNkZWZpbmUgQ09ORklHX1BSRUJPT1QJCSJcMCIKLQotI2lmZGVmIERFTFRBX0NIRUNLX0tFWUJECi0jIGRlZmluZSBLRVlCRF9EQVRBTEVOCQk0CS8qIHdlIGhhdmUgZm91ciBrZXlzICovCi0jIGRlZmluZSBLRVlCRF9LUF9ES0lOMAkJMHgxCS8qIHZvbCsgKi8KLSMgZGVmaW5lIEtFWUJEX0tQX0RLSU4xCQkweDIJLyogdm9sLSAqLwotIyBkZWZpbmUgS0VZQkRfS1BfREtJTjIJCTB4MwkvKiBtdWx0aSAqLwotIyBkZWZpbmUgS0VZQkRfS1BfREtJTjUJCTB4NAkvKiBTV0tFWV9HTiAqLwotI2VuZGlmIC8qIERFTFRBX0NIRUNLX0tFWUJEICovCi0KLS8qCi0gKiBzZWxlY3Qgc2VyaWFsIGNvbnNvbGUgY29uZmlndXJhdGlvbgotICovCi0jZGVmaW5lIENPTkZJR19QWEFfU0VSSUFMCi0jZGVmaW5lIENPTkZJR19GRlVBUlQJCTEKLQotLyogYWxsb3cgdG8gb3ZlcndyaXRlIHNlcmlhbCBhbmQgZXRoYWRkciAqLwotI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQotCi0jZGVmaW5lIENPTkZJR19CQVVEUkFURQkJMTE1MjAwCi0KLQotLyoKLSAqIEJPT1RQIG9wdGlvbnMKLSAqLwotI2RlZmluZSBDT05GSUdfQk9PVFBfQk9PVEZJTEVTSVpFCi0jZGVmaW5lIENPTkZJR19CT09UUF9CT09UUEFUSAotI2RlZmluZSBDT05GSUdfQk9PVFBfR0FURVdBWQotI2RlZmluZSBDT05GSUdfQk9PVFBfSE9TVE5BTUUKLQotCi0vKgotICogQ29tbWFuZCBsaW5lIGNvbmZpZ3VyYXRpb24uCi0gKi8KLSNpbmNsdWRlIDxjb25maWdfY21kX2RlZmF1bHQuaD4KLQotI2lmZGVmIFRVUk5fT05fRVRIRVJORVQKLQotI2RlZmluZSBDT05GSUdfQ01EX1BJTkcKLQotI2Vsc2UKLQotI2RlZmluZSBDT05GSUdfQ01EX1NBVkVFTlYKLSNkZWZpbmUgQ09ORklHX0NNRF9OQU5ECi0jZGVmaW5lIENPTkZJR19DTURfSTJDCi0KLSN1bmRlZiBDT05GSUdfQ01EX05FVAotI3VuZGVmIENPTkZJR19DTURfRkxBU0gKLSN1bmRlZiBDT05GSUdfQ01EX0lNTFMKLQotI2VuZGlmCi0KLS8qIFVTQiAqLwotI2RlZmluZSBDT05GSUdfVVNCX09IQ0lfTkVXCTEKLSNkZWZpbmUgQ09ORklHX1VTQl9TVE9SQUdFICAgICAgMQotI2RlZmluZSBDT05GSUdfRE9TX1BBUlRJVElPTiAgICAxCi0KLSNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPiAvKiBmb3IgT0hDSV9SRUdTX0JBU0UgKi8KLQotI3VuZGVmIENPTkZJR19TWVNfVVNCX09IQ0lfQk9BUkRfSU5JVAotI2RlZmluZSBDT05GSUdfU1lTX1VTQl9PSENJX0NQVV9JTklUCTEKLSNkZWZpbmUgQ09ORklHX1NZU19VU0JfT0hDSV9SRUdTX0JBU0UJT0hDSV9SRUdTX0JBU0UKLSNkZWZpbmUgQ09ORklHX1NZU19VU0JfT0hDSV9TTE9UX05BTUUJImRlbHRhIgotI2RlZmluZSBDT05GSUdfU1lTX1VTQl9PSENJX01BWF9ST09UX1BPUlRTCTMKLQotI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCS0xCi0jZGVmaW5lIENPTkZJR19FVEhBRERSCQkwODowMDozZToyNjowYTo1YgotI2RlZmluZSBDT05GSUdfTkVUTUFTSwkJMjU1LjI1NS4wLjAKLSNkZWZpbmUgQ09ORklHX0lQQUREUgkJMTkyLjE2OC4wLjIxCi0jZGVmaW5lIENPTkZJR19TRVJWRVJJUAkJMTkyLjE2OC4wLjI1MAotI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQJImJvb3RtIDgwMDAwIgotI2RlZmluZSBDT05GSUdfQk9PVEFSR1MJCSJyb290PS9kZXYvbXRkYmxvY2syIHJvb3Rmc3R5cGU9Y3JhbWZzIGNvbnNvbGU9dHR5UzAsMTE1MjAwIgotI2RlZmluZSBDT05GSUdfQ01ETElORV9UQUcKLSNkZWZpbmUgQ09ORklHX1RJTUVTVEFNUAotCi0jaWYgZGVmaW5lZChDT05GSUdfQ01EX0tHREIpCi0jZGVmaW5lIENPTkZJR19LR0RCX0JBVURSQVRFCTIzMDQwMAkJLyogc3BlZWQgdG8gcnVuIGtnZGIgc2VyaWFsIHBvcnQgKi8KLSNkZWZpbmUgQ09ORklHX0tHREJfU0VSX0lOREVYCTIJCS8qIHdoaWNoIHNlcmlhbCBwb3J0IHRvIHVzZSAqLwotI2VuZGlmCi0KLS8qCi0gKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCi0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19IVVNIX1BBUlNFUgkJMQotI2RlZmluZSBDT05GSUdfU1lTX1BST01QVF9IVVNIX1BTMgkiPiAiCi0KLSNkZWZpbmUgQ09ORklHX1NZU19MT05HSEVMUAkJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KLSNpZmRlZiBDT05GSUdfU1lTX0hVU0hfUEFSU0VSCi0jZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUCQkiJCAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCi0jZWxzZQotI2RlZmluZSBDT05GSUdfU1lTX1BST01QVAkJIj0+ICIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgKi8KLSNlbmRpZgotI2RlZmluZSBDT05GSUdfU1lTX0NCU0laRQkJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwotI2RlZmluZSBDT05GSUdfU1lTX1BCU0laRSAoQ09ORklHX1NZU19DQlNJWkUrc2l6ZW9mKENPTkZJR19TWVNfUFJPTVBUKSsxNikgLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19NQVhBUkdTCQkxNgkJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19CQVJHU0laRQkJQ09ORklHX1NZU19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0RFVklDRV9OVUxMREVWCTEKLQotI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHg4MDQwMDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uCSovCi0jZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9FTkQJCTB4ODA4MDAwMDAJLyogNCAuLi4gOCBNQiBpbiBEUkFNCSovCi0KLSNkZWZpbmUgQ09ORklHX1NZU19MT0FEX0FERFIJKENPTkZJR19TWVNfRFJBTV9CQVNFICsgMHg4MDAwKSAvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLwotCi0jZGVmaW5lIENPTkZJR19TWVNfSFoJCQkxMDAwCi0KLS8qIE1vbmFoYW5zIENvcmUgRnJlcXVlbmN5ICovCi0jZGVmaW5lIENPTkZJR19TWVNfTU9OQUhBTlNfUlVOX01PREVfT1NDX1JBVElPCQkxNiAvKiB2YWxpZCB2YWx1ZXM6IDgsIDE2LCAyNCwgMzEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19NT05BSEFOU19UVVJCT19SVU5fTU9ERV9SQVRJTwkxICAvKiB2YWxpZCB2YWx1ZXM6IDEsIDIgKi8KLQotCi0JCQkJCQkvKiB2YWxpZCBiYXVkcmF0ZXMgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19CQVVEUkFURV9UQUJMRQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCB9Ci0KLSNpZmRlZiBDT05GSUdfTU1DCi0jZGVmaW5lIENPTkZJR19QWEFfTU1DCi0jZGVmaW5lIENPTkZJR19DTURfTU1DCi0jZGVmaW5lIENPTkZJR19TWVNfTU1DX0JBU0UJCTB4RjAwMDAwMDAKLSNlbmRpZgotCi0vKgotICogU3RhY2sgc2l6ZXMKLSAqCi0gKiBUaGUgc3RhY2sgc2l6ZXMgYXJlIHNldCB1cCBpbiBzdGFydC5TIHVzaW5nIHRoZSBzZXR0aW5ncyBiZWxvdwotICovCi0jZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJKDEyOCoxMDI0KQkvKiByZWd1bGFyIHN0YWNrICovCi0jaWZkZWYgQ09ORklHX1VTRV9JUlEKLSNkZWZpbmUgQ09ORklHX1NUQUNLU0laRV9JUlEJKDQqMTAyNCkJLyogSVJRIHN0YWNrICovCi0jZGVmaW5lIENPTkZJR19TVEFDS1NJWkVfRklRCSg0KjEwMjQpCS8qIEZJUSBzdGFjayAqLwotI2VuZGlmCi0KLS8qCi0gKiBQaHlzaWNhbCBNZW1vcnkgTWFwCi0gKi8KLSNkZWZpbmUgQ09ORklHX05SX0RSQU1fQkFOS1MJNAkgICAvKiB3ZSBoYXZlIDIgYmFua3Mgb2YgRFJBTSAqLwotI2RlZmluZSBQSFlTX1NEUkFNXzEJCTB4ODAwMDAwMDAgLyogU0RSQU0gQmFuayAjMSAqLwotI2RlZmluZSBQSFlTX1NEUkFNXzFfU0laRQkweDEwMDAwMDAgIC8qIDY0IE1CICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fMgkJMHg4MTAwMDAwMCAvKiBTRFJBTSBCYW5rICMyICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fMl9TSVpFCTB4MTAwMDAwMCAgLyogNjQgTUIgKi8KLSNkZWZpbmUgUEhZU19TRFJBTV8zCQkweDgyMDAwMDAwIC8qIFNEUkFNIEJhbmsgIzMgKi8KLSNkZWZpbmUgUEhZU19TRFJBTV8zX1NJWkUJMHgxMDAwMDAwICAvKiA2NCBNQiAqLwotI2RlZmluZSBQSFlTX1NEUkFNXzQJCTB4ODMwMDAwMDAgLyogU0RSQU0gQmFuayAjNCAqLwotI2RlZmluZSBQSFlTX1NEUkFNXzRfU0laRQkweDEwMDAwMDAgIC8qIDY0IE1CICovCi0KLSNkZWZpbmUgQ09ORklHX1NZU19EUkFNX0JBU0UJCTB4ODAwMDAwMDAgLyogYXQgQ1MwICovCi0jZGVmaW5lIENPTkZJR19TWVNfRFJBTV9TSVpFCQkweDA0MDAwMDAwIC8qIDY0IE1CIFJhbSAqLwotCi0jdW5kZWYgQ09ORklHX1NZU19TS0lQX0RSQU1fU0NSVUIKLQotI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCVBIWVNfU0RSQU1fMQotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKLQotLyoKLSAqIE5BTkQgRmxhc2gKLSAqLwotI2RlZmluZSBDT05GSUdfU1lTX05BTkQwX0JBU0UJCTB4MCAvKiAweDQzMTAwMDQwICovIC8qIDB4MTAwMDAwMDAgKi8KLSN1bmRlZiBDT05GSUdfU1lTX05BTkQxX0JBU0UKLQotI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRV9MSVNUCXsgQ09ORklHX1NZU19OQU5EMF9CQVNFIH0KLSNkZWZpbmUgQ09ORklHX1NZU19NQVhfTkFORF9ERVZJQ0UJMQkvKiBNYXggbnVtYmVyIG9mIE5BTkQgZGV2aWNlcyAqLwotCi0vKiBuYW5kIHRpbWVvdXQgdmFsdWVzICovCi0jZGVmaW5lIENPTkZJR19TWVNfTkFORF9QUk9HX0VSQVNFX1RPCTMwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19OQU5EX09USEVSX1RPCTEwMAotI2RlZmluZSBDT05GSUdfU1lTX05BTkRfU0VORENNRF9SRVRSWQkzCi0jdW5kZWYgTkFORF9BTExPV19FUkFTRV9BTEwJLyogQWxsb3cgZXJhc2luZyBiYWQgYmxvY2tzIC0gZG9uJ3QgdXNlICovCi0KLS8qIE5BTkQgVGltaW5nIFBhcmFtZXRlcnMgKGluIG5zKSAqLwotI2RlZmluZSBOQU5EX1RJTUlOR190Q0gJCTEwCi0jZGVmaW5lIE5BTkRfVElNSU5HX3RDUwkJMAotI2RlZmluZSBOQU5EX1RJTUlOR190V0gJCTIwCi0jZGVmaW5lIE5BTkRfVElNSU5HX3RXUAkJNDAKLQotI2RlZmluZSBOQU5EX1RJTUlOR190UkgJCTIwCi0jZGVmaW5lIE5BTkRfVElNSU5HX3RSUAkJNDAKLQotI2RlZmluZSBOQU5EX1RJTUlOR190UgkJMTExMjMKLSNkZWZpbmUgTkFORF9USU1JTkdfdFdIUgkxMDAKLSNkZWZpbmUgTkFORF9USU1JTkdfdEFSCQkxMAotCi0vKiBOQU5EIGRlYnVnZ2luZyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0RGQ19ERUJVRzEgLyogdXNlZnVsbCAqLwotI3VuZGVmIENPTkZJR19TWVNfREZDX0RFQlVHMiAgLyogbm9pc3kgKi8KLSN1bmRlZiBDT05GSUdfU1lTX0RGQ19ERUJVRzMgIC8qIGV4dHJlbWx5IG5vaXN5ICAqLwotCi0jZGVmaW5lIENPTkZJR19NVERfREVCVUcKLSNkZWZpbmUgQ09ORklHX01URF9ERUJVR19WRVJCT1NFIDEKLQotI2RlZmluZSBDT05GSUdfU1lTX05PX0ZMQVNICQkxCi0KLSNkZWZpbmUgQ09ORklHX0VOVl9JU19JTl9OQU5ECTEKLSNkZWZpbmUgQ09ORklHX0VOVl9PRkZTRVQJCTB4NDAwMDAKLSNkZWZpbmUgQ09ORklHX0VOVl9PRkZTRVRfUkVEVU5ECTB4NDQwMDAKLSNkZWZpbmUgQ09ORklHX0VOVl9TSVpFCQkweDQwMDAKLQotI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9kZXZraXQ4MDAwLmggYi9pbmNsdWRlL2NvbmZpZ3MvZGV2a2l0ODAwMC5oCmluZGV4IDI4MTU3NzEuLmZiODFjNjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9kZXZraXQ4MDAwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2RldmtpdDgwMDAuaApAQCAtNjMsNyArNjMsNiBAQAogI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCQkoMTI4IDw8IDEwKQkvKiAxMjggS2lCICovCiAJCQkJCQkvKiBTZWN0b3IgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgKDEyOCA8PCAxMCkpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogYnl0ZXMgcmVzZXJ2ZWQgZm9yICovCiAJCQkJCQkvKiBpbml0aWFsIGRhdGEgKi8KIAogLyogSGFyZHdhcmUgZHJpdmVycyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2RpZ3N5X210Yy5oIGIvaW5jbHVkZS9jb25maWdzL2RpZ3N5X210Yy5oCmluZGV4IDJlOWExM2YuLmQ1NDExNjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9kaWdzeV9tdGMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZGlnc3lfbXRjLmgKQEAgLTMwOCwxMSArMzA4LDEwIEBACiAgKiAgVXNlIFNSQU0gdW50aWwgUkFNIHdpbGwgYmUgYXZhaWxhYmxlCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCU1QQzVYWFhfU1JBTQotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJTVBDNVhYWF9TUkFNX1NJWkUKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCQlNUEM1WFhYX1NSQU1fU0laRQogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk0MDk2CiAjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCVwKLQkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJQ09ORklHX1NZU19URVhUX0JBU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9kbHZpc2lvbi5oIGIvaW5jbHVkZS9jb25maWdzL2RsdmlzaW9uLmgKaW5kZXggMGQ0NGVkYS4uYzQ5MGZmNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2RsdmlzaW9uLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2RsdmlzaW9uLmgKQEAgLTE5MSwxMSArMTkxLDEwIEBACiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUgkweEY4MDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfU0laRQkweDEwMDAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0RBVEFfQUREUiAvKiBpbiBTRFJBTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIFNpemUgb2YgdXNlZCBhcmVhICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAgLyogc2l6ZS9ieXRlcyByZXMnZCBmb3IgaW5pdCBkYXRhKi8KICNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgXAotCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKwkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9kbnAxMTEwLmggYi9pbmNsdWRlL2NvbmZpZ3MvZG5wMTExMC5oCmluZGV4IGU0OGUyMGYuLjVjMDVlNGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9kbnAxMTEwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2RucDExMTAuaApAQCAtNDksNyArNDksNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZVhhbGlvbi5oIGIvaW5jbHVkZS9jb25maWdzL2VYYWxpb24uaAppbmRleCA2MzdjYzU1Li42MWYzNGRkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZVhhbGlvbi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9lWGFsaW9uLmgKQEAgLTExOSwxMSArMTE5LDEwIEBACiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9EQVRBX1NJWkUJMTI4CiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4NDAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0lOSVRfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gQ09ORklHX1NZU19JTklUX0RBVEFfU0laRSkKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJIDI1NgkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZWJfY3B1eDlrMi5oIGIvaW5jbHVkZS9jb25maWdzL2ViX2NwdXg5azIuaAppbmRleCA4ZDhhZjkzLi43NTRmYzhiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZWJfY3B1eDlrMi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9lYl9jcHV4OWsyLmgKQEAgLTkxLDcgKzkxLDYgQEAKICAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArIDUyMCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CiAKIC8qCiAgKiBzZHJhbQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2Vib255LmggYi9pbmNsdWRlL2NvbmZpZ3MvZWJvbnkuaAppbmRleCBhMGQzODY5Li5kNmI2NTUxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZWJvbnkuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZWJvbnkuaApAQCAtNzMsMTAgKzczLDkgQEAKICAqIEluaXRpYWwgUkFNICYgc3RhY2sgcG9pbnRlciAocGxhY2VkIGluIGludGVybmFsIFNSQU0pCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgICBDT05GSUdfU1lTX0lTUkFNX0JBU0UgIC8qIEluaXRpYWwgUkFNIGFkZHJlc3MJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgMHgyMDAwCSAgICAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgIDEyOAkJICAgIC8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEJKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICAgIDB4MjAwMAkgICAgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2VkYjkzeHguaCBiL2luY2x1ZGUvY29uZmlncy9lZGI5M3h4LmgKaW5kZXggZmYyNWVlMi4uMTliNzYzMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2VkYjkzeHguaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZWRiOTN4eC5oCkBAIC0yMTgsNyArMjE4LDYgQEAKICNkZWZpbmUgTElOVVhfQk9PVF9QQVJBTV9BRERSCShQSFlTX1NEUkFNXzEgKyAweDEwMCkKIAogLyogUnVuLXRpbWUgbWVtb3J5IGFsbG9jYXRvbnMgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAogI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFCQkoMTI4ICogMTAyNCkKIAogI2lmIGRlZmluZWQoQ09ORklHX1VTRV9JUlEpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZWRtaW5pdjIuaCBiL2luY2x1ZGUvY29uZmlncy9lZG1pbml2Mi5oCmluZGV4IDQzZTVlODcuLmE3NWYwNmEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9lZG1pbml2Mi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9lZG1pbml2Mi5oCkBAIC0yMDUsNyArMjA1LDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JKDEwMjQgKiAxMjgpIC8qIDEyOGtCIGZvciBtYWxsb2MoKSAqLwogLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKIAogLyoKICAqIE90aGVyIHJlcXVpcmVkIG1pbmltYWwgY29uZmlndXJhdGlvbnMKQEAgLTIyNiw2ICsyMjUsNiBAQAogLyogYWRkaXRpb25zIGZvciBuZXcgcmVsb2NhdGlvbiBjb2RlLCBtdXN0IGJlIGFkZGVkIHRvIGFsbCBib2FyZHMgKi8KICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQkwCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9BRERSCVwKLQkoQ09ORklHX1NZU19TRFJBTV9CQVNFICsgMHgxMDAwIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorCShDT05GSUdfU1lTX1NEUkFNX0JBU0UgKyAweDEwMDAgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAogI2VuZGlmIC8qIF9DT05GSUdfRURNSU5JVjJfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2VwNzMxMi5oIGIvaW5jbHVkZS9jb25maWdzL2VwNzMxMi5oCmluZGV4IGUxNTFmYWEuLmZkYjk4YjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9lcDczMTIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZXA3MzEyLmgKQEAgLTQyLDcgKzQyLDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAvKgogICogSGFyZHdhcmUgZHJpdmVycwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2VwODI0OC5oIGIvaW5jbHVkZS9jb25maWdzL2VwODI0OC5oCmluZGV4IDVmMDgzYmQuLmJiODdkMzYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9lcDgyNDguaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZXA4MjQ4LmgKQEAgLTIxOCw5ICsyMTgsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX0lNTVIJCTB4RjAwMDAwMDAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MjAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MjAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyogSGFyZCByZXNldCBjb25maWd1cmF0aW9uIHdvcmQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9lcDgyNjAuaCBiL2luY2x1ZGUvY29uZmlncy9lcDgyNjAuaAppbmRleCBjYmY1NWRiLi5iMTU2NTlkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZXA4MjYwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2VwODI2MC5oCkBAIC00MjksOSArNDI5LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICAgICAgIENPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgICAgICAgMHg0MDAwICAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAgIDEyOCAgICAgLyogYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAgICAgICAgMHg0MDAwICAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAgICAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQgICAgICBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZXA4Mnh4bS5oIGIvaW5jbHVkZS9jb25maWdzL2VwODJ4eG0uaAppbmRleCA0ODk4NWEwLi42OTJmMGVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZXA4Mnh4bS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9lcDgyeHhtLmgKQEAgLTM0Niw5ICszNDYsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX0lNTVIJCTB4RjAwMDAwMDAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MjAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MjAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZXNwdC5oIGIvaW5jbHVkZS9jb25maWdzL2VzcHQuaAppbmRleCAyZWM5MDdjLi4yNjM4OWVkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZXNwdC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9lc3B0LmgKQEAgLTg1LDcgKzg1LDYgQEAKIC8qIFNpemUgb2YgRFJBTSByZXNlcnZlZCBmb3IgbWFsbG9jKCkgdXNlICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDEwMjQgKiAxMDI0KQogLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkoMjU2KQogI2RlZmluZSBDT05GSUdfU1lTX0JPT1RNQVBTWgkJKDggKiAxMDI0ICogMTAyNCkKIAogI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0NGSQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2V2YjQ1MTAuaCBiL2luY2x1ZGUvY29uZmlncy9ldmI0NTEwLmgKaW5kZXggMGY0MTVkOS4uZmIwNTcyNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2V2YjQ1MTAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZXZiNDUxMC5oCkBAIC01Myw3ICs1Myw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAogCiAvKgogICogSGFyZHdhcmUgZHJpdmVycwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2dhbGF4eTUyMDAuaCBiL2luY2x1ZGUvY29uZmlncy9nYWxheHk1MjAwLmgKaW5kZXggZDk1MTQ0ZC4uOTUzNWViOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2dhbGF4eTUyMDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZ2FsYXh5NTIwMC5oCkBAIC0yMDcsMTMgKzIwNywxMiBAQAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJTVBDNVhYWF9TUkFNCiAKIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gU1BSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCU1QQzVYWFhfU1JBTV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJTVBDNVhYWF9TUkFNX1NJWkUKIAogLyogU2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBcCi0JCQkJCQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBcCisJCQkJCQlHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCUNPTkZJR19TWVNfVEVYVF9CQVNFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZ2NwbHVzLmggYi9pbmNsdWRlL2NvbmZpZ3MvZ2NwbHVzLmgKaW5kZXggNDEyOTRiOS4uODJlNzBmNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2djcGx1cy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9nY3BsdXMuaApAQCAtNjAsNyArNjAsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOICAgICAgICAgIChDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgIDEyOCAgICAgLyogc2l6ZSByc3J2ZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9nZHBwYzQ0MGV0eC5oIGIvaW5jbHVkZS9jb25maWdzL2dkcHBjNDQwZXR4LmgKaW5kZXggMjgyYWZiYy4uM2M1OWZmNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2dkcHBjNDQwZXR4LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2dkcHBjNDQwZXR4LmgKQEAgLTcyLDEwICs3Miw5IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9EQ0FDSEUJMQkJLyogZC1jYWNoZSBhcyBpbml0IHJhbSovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDcwMDAwMDAwCS8qIERDYWNoZSAgICAgICAgICAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJKDQgPDwgMTApCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYJCS8qIG51bSBieXRlcyBpbml0IGRhdGEqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgXAotCQkJCQkgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJKDQgPDwgMTApCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgXAorCQkJCQkgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2dyX2NwY2lfYXgyMDAwLmggYi9pbmNsdWRlL2NvbmZpZ3MvZ3JfY3BjaV9heDIwMDAuaAppbmRleCBiYjRlYTc5Li5kYzYyZWEzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZ3JfY3BjaV9heDIwMDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZ3JfY3BjaV9heDIwMDAuaApAQCAtMjYxLDEwICsyNjEsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX1JBTV9FTkQgQ09ORklHX1NZU19TRFJBTV9FTkQKICNlbmRpZgogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX1JBTV9FTkQgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAotI2RlZmluZSBDT05GSUdfU1lTX1BST01fU0laRQkJKDgxOTItQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX1BST01fU0laRQkJKDgxOTItR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfUFJPTV9PRkZTRVQJCShDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVC1DT05GSUdfU1lTX1BST01fU0laRSkKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCShDT05GSUdfU1lTX1BST01fT0ZGU0VULTMyKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2dyX2VwMnM2MC5oIGIvaW5jbHVkZS9jb25maWdzL2dyX2VwMnM2MC5oCmluZGV4IDM1YzRhMDguLjVlZmU2NzYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9ncl9lcDJzNjAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZ3JfZXAyczYwLmgKQEAgLTIyOSwxMCArMjI5LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19SQU1fU0laRSBDT05GSUdfU1lTX1NEUkFNX1NJWkUKICNkZWZpbmUgQ09ORklHX1NZU19SQU1fRU5EIENPTkZJR19TWVNfU0RSQU1fRU5ECiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfU0RSQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19TRFJBTV9FTkQgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAotI2RlZmluZSBDT05GSUdfU1lTX1BST01fU0laRQkJKDgxOTItQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX1BST01fU0laRQkJKDgxOTItR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfUFJPTV9PRkZTRVQJCShDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVC1DT05GSUdfU1lTX1BST01fU0laRSkKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCShDT05GSUdfU1lTX1BST01fT0ZGU0VULTMyKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2dyX3hjM3NfMTUwMC5oIGIvaW5jbHVkZS9jb25maWdzL2dyX3hjM3NfMTUwMC5oCmluZGV4IDkyZmJiYmIuLjUwNWRiMTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9ncl94YzNzXzE1MDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZ3JfeGMzc18xNTAwLmgKQEAgLTIwNiwxMCArMjA2LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19SQU1fU0laRSBDT05GSUdfU1lTX1NEUkFNX1NJWkUKICNkZWZpbmUgQ09ORklHX1NZU19SQU1fRU5EIENPTkZJR19TWVNfU0RSQU1fRU5ECiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfUkFNX0VORCAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCi0jZGVmaW5lIENPTkZJR19TWVNfUFJPTV9TSVpFCQkoODE5Mi1DT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfUFJPTV9TSVpFCQkoODE5Mi1HRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19QUk9NX09GRlNFVAkJKENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VULUNPTkZJR19TWVNfUFJPTV9TSVpFKQogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJKENPTkZJR19TWVNfUFJPTV9PRkZTRVQtMzIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZ3JzaW0uaCBiL2luY2x1ZGUvY29uZmlncy9ncnNpbS5oCmluZGV4IDVkZmRmNTEuLmJiZDJmOTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9ncnNpbS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9ncnNpbS5oCkBAIC0yMzEsMTAgKzIzMSw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfUkFNX1NJWkUgQ09ORklHX1NZU19TRFJBTV9TSVpFCiAjZGVmaW5lIENPTkZJR19TWVNfUkFNX0VORCBDT05GSUdfU1lTX1NEUkFNX0VORAogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX1JBTV9FTkQgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAotI2RlZmluZSBDT05GSUdfU1lTX1BST01fU0laRQkJKDgxOTItQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX1BST01fU0laRQkJKDgxOTItR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfUFJPTV9PRkZTRVQJCShDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVC1DT05GSUdfU1lTX1BST01fU0laRSkKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCShDT05GSUdfU1lTX1BST01fT0ZGU0VULTMyKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2dyc2ltX2xlb24yLmggYi9pbmNsdWRlL2NvbmZpZ3MvZ3JzaW1fbGVvbjIuaAppbmRleCAzOWFmOGZlLi4yOTRkNmM0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZ3JzaW1fbGVvbjIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvZ3JzaW1fbGVvbjIuaApAQCAtMjI5LDEwICsyMjksOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX1JBTV9TSVpFIENPTkZJR19TWVNfU0RSQU1fU0laRQogI2RlZmluZSBDT05GSUdfU1lTX1JBTV9FTkQgQ09ORklHX1NZU19TRFJBTV9FTkQKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19SQU1fRU5EIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKLSNkZWZpbmUgQ09ORklHX1NZU19QUk9NX1NJWkUJCSg4MTkyLUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19QUk9NX1NJWkUJCSg4MTkyLUdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX1BST01fT0ZGU0VUCQkoQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQtQ09ORklHX1NZU19QUk9NX1NJWkUpCiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAkoQ09ORklHX1NZU19QUk9NX09GRlNFVC0zMikKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9ndzgyNjAuaCBiL2luY2x1ZGUvY29uZmlncy9ndzgyNjAuaAppbmRleCA2YzFkZGFjLi4zNWU2OTQ0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvZ3c4MjYwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2d3ODI2MC5oCkBAIC00MzgsOSArNDM4LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICAgIENPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgICAgMHg0MDAwICAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgIDEyOCAvKiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICAgICAweDQwMDAgIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVCAgIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9oY3U0LmggYi9pbmNsdWRlL2NvbmZpZ3MvaGN1NC5oCmluZGV4IGRkNWU1YTIuLmM1NmVmZGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9oY3U0LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2hjdTQuaApAQCAtNzEsOSArNzEsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX1RFTVBfU1RBQ0tfT0NNIDEKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSCS8qIE9DTQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAkoQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgLSAweDQpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9oY3U1LmggYi9pbmNsdWRlL2NvbmZpZ3MvaGN1NS5oCmluZGV4IGEyZWRmNTEuLjBjOGZkZjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9oY3U1LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2hjdTUuaApAQCAtODIsOSArODIsOCBAQAogLyogNDQwRVB4LzQ0MEdSeCBoYXZlIDE2S0Igb2YgaW50ZXJuYWwgU1JBTSwgc28gbm8gbmVlZCBmb3IgRC1DYWNoZQkqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fQkFTRQkvKiBPQ00JCQkqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECSg0IDw8IDEwKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMjU2CQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCSg0IDw8IDEwKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJKENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIC0gMHg0KQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvaGVybWVzLmggYi9pbmNsdWRlL2NvbmZpZ3MvaGVybWVzLmgKaW5kZXggNThmYzRjZS4uZDg0OWI1YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2hlcm1lcy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9oZXJtZXMuaApAQCAtMTIyLDkgKzEyMiw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvaG1pMTAwMS5oIGIvaW5jbHVkZS9jb25maWdzL2htaTEwMDEuaAppbmRleCA2MGU1YzJiLi4zNTQwNzJhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvaG1pMTAwMS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9obWkxMDAxLmgKQEAgLTE5NiwxMyArMTk2LDEyIEBACiAjZGVmaW5lIE1QQzVYWFhfU1JBTV9QT1NUX1NJWkUgKE1QQzVYWFhfU1JBTV9TSVpFIC0gNCkKIAogI2lmZGVmIENPTkZJR19QT1NUCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9QT1NUX1NJWkUKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9QT1NUX1NJWkUKICNlbHNlCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlNUEM1WFhYX1NSQU1fU0laRQogI2VuZGlmCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRSAgICBDT05GSUdfU1lTX1RFWFRfQkFTRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2h5bW9kLmggYi9pbmNsdWRlL2NvbmZpZ3MvaHltb2QuaAppbmRleCBjY2ZjM2RmLi43YzRjMmJhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvaHltb2QuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvaHltb2QuaApAQCAtMzc3LDkgKzM3Nyw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2ljb24uaCBiL2luY2x1ZGUvY29uZmlncy9pY29uLmgKaW5kZXggOGQ5OGQ1Ny4uMmZhYzBlZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2ljb24uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvaWNvbi5oCkBAIC05NywxMSArOTcsMTAgQEAKICNkZWZpbmUgQ09ORklHX1NZU19URU1QX1NUQUNLX09DTQkxCiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUglDT05GSUdfU1lTX0lTUkFNX0JBU0UKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSVNSQU1fQkFTRQkvKiBJbml0IFJBTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJMHgyMDAwCQkvKiBlbmQgdXNlZCBhcmVhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJCS8qIHNpemVvZiBpbml0IGRhdGEgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MjAwMAkJLyogc2l6ZSBvZiB1c2VkIGFyZWEgKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBcCi0JCQkJCSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBcCisJCQkJCSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAkoQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgLSAweDQpCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvaWRtci5oIGIvaW5jbHVkZS9jb25maWdzL2lkbXIuaAppbmRleCA4MTA1ODc2Li5mYzA0NmQ2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvaWRtci5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9pZG1yLmgKQEAgLTE4MCw5ICsxODAsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHgyMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBpbnRlcm5hbCBTUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIGludGVybmFsIFNSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qCkBAIC0yMjUsOSArMjI0LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRUxJTkVfU0laRQkxNgogCiAjZGVmaW5lIElDQUNIRV9TVEFUVVMJCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgXAotCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSA4KQorCQkJCQkgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gOCkKICNkZWZpbmUgRENBQ0hFX1NUQVRVUwkJCShDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyBcCi0JCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIDQpCisJCQkJCSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSA0KQogI2RlZmluZSBDT05GSUdfU1lTX0lDQUNIRV9JTlYJCShDRl9DQUNSX0NJTlYgfCBDRl9DQUNSX0lOVkkpCiAjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVfQUNSMAkJKENPTkZJR19TWVNfU0RSQU1fQkFTRSB8IFwKIAkJCQkJIENGX0FERFJNQVNLKENPTkZJR19TWVNfU0RSQU1fU0laRSkgfCBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvaWdlcDAwMjAuaCBiL2luY2x1ZGUvY29uZmlncy9pZ2VwMDAyMC5oCmluZGV4IDM0ZThhNTcuLjE2ZDkyNzkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9pZ2VwMDAyMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9pZ2VwMDAyMC5oCkBAIC0yMTAsNyArMjEwLDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArICgxMjggPDwgMTApKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4IC8qIGJ5dGVzIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqIFNNU0M5MTF4IEV0aGVybmV0CkBAIC0yMjMsNiArMjIyLDYgQEAKICNlbmRpZiAvKiAoQ09ORklHX0NNRF9ORVQpICovCiAKICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQlQSFlTX1NEUkFNXzEKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShMT1dfTEVWRUxfU1JBTV9TVEFDSyAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShMT1dfTEVWRUxfU1JBTV9TVEFDSyAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAjZW5kaWYgLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2lnZXAwMDMwLmggYi9pbmNsdWRlL2NvbmZpZ3MvaWdlcDAwMzAuaAppbmRleCA1ZTJlMGVkLi5kNmZiZWM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvaWdlcDAwMzAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvaWdlcDAwMzAuaApAQCAtMjA3LDkgKzIwNyw4IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAoMTI4IDw8IDEwKSkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAvKiBieXRlcyBmb3IgaW5pdGlhbCBkYXRhICovCiAKICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQlQSFlTX1NEUkFNXzEKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShMT1dfTEVWRUxfU1JBTV9TVEFDSyAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShMT1dfTEVWRUxfU1JBTV9TVEFDSyAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAjZW5kaWYgLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2ltcGE3LmggYi9pbmNsdWRlL2NvbmZpZ3MvaW1wYTcuaAppbmRleCBmZGZhMDIyLi4zMzI4ZTYzOWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9pbXBhNy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9pbXBhNy5oCkBAIC00Miw3ICs0Miw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9pbXgyN2xpdGUtY29tbW9uLmggYi9pbmNsdWRlL2NvbmZpZ3MvaW14MjdsaXRlLWNvbW1vbi5oCmluZGV4IDg4ZThkM2QuLmI4ZGM1YWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9pbXgyN2xpdGUtY29tbW9uLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2lteDI3bGl0ZS1jb21tb24uaApAQCAtODksNyArODksNiBAQAogLyogbWFsbG9jKCkgbGVuICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDB4MTAwMDAgKyA1MTIgKiAxMDI0KQogLyogcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CiAvKiBtZW10ZXN0IHN0YXJ0IGFkZHJlc3MgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCTB4QTAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJMHhBMTAwMDAwMAkvKiAxNk1CIFJBTSB0ZXN0ICovCkBAIC0yMzgsNSArMjM3LDUgQEAKIC8qIGFkZGl0aW9ucyBmb3IgbmV3IHJlbG9jYXRpb24gY29kZSwgbXVzdCBiZSBhZGRlZCB0byBhbGwgYm9hcmRzICovCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJUEhZU19TRFJBTV8xCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoQ09ORklHX1NZU19TRFJBTV9CQVNFICsgMHgxMDAwIC0gLyogRml4IHRoaXMgKi8gXAotCQkJCQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisJCQkJCUdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2VuZGlmIC8qIF9fSU1YMjdMSVRFX0NPTU1PTl9DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2lteDMxX2xpdGVraXQuaCBiL2luY2x1ZGUvY29uZmlncy9pbXgzMV9saXRla2l0LmgKaW5kZXggOTQyNTIzNy4uZGI0ZWMzZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2lteDMxX2xpdGVraXQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvaW14MzFfbGl0ZWtpdC5oCkBAIC01NCw3ICs1NCw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjggKiAxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKQEAgLTE1MCw4ICsxNDksOCBAQAogI3VuZGVmIENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MKICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQlDU0QwX0JBU0UKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUlSQU1fQkFTRV9BRERSCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECQlJUkFNX1NJWkUKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJCUlSQU1fU0laRQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9pbXgzMV9waHljb3JlLmggYi9pbmNsdWRlL2NvbmZpZ3MvaW14MzFfcGh5Y29yZS5oCmluZGV4IDYyOTQ0YTkuLjRkMTFmOTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9pbXgzMV9waHljb3JlLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2lteDMxX3BoeWNvcmUuaApAQCAtNTIsNyArNTIsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4ICogMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvaW5rYTR4MC5oIGIvaW5jbHVkZS9jb25maWdzL2lua2E0eDAuaAppbmRleCAzNjM2ZDEyLi45YjExNmU2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvaW5rYTR4MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9pbmthNHgwLmgKQEAgLTIxMSwxMyArMjExLDEyIEBACiAjZGVmaW5lIE1QQzVYWFhfU1JBTV9QT1NUX1NJWkUgKE1QQzVYWFhfU1JBTV9TSVpFIC0gNCkKIAogI2lmZGVmIENPTkZJR19QT1NUCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9QT1NUX1NJWkUKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9QT1NUX1NJWkUKICNlbHNlCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlNUEM1WFhYX1NSQU1fU0laRQogI2VuZGlmCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRSAgICBDT05GSUdfU1lTX1RFWFRfQkFTRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2lubm9rb20uaCBiL2luY2x1ZGUvY29uZmlncy9pbm5va29tLmgKaW5kZXggMDA3Y2NlYi4uZDhmY2JkYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2lubm9rb20uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvaW5ub2tvbS5oCkBAIC00MCw2ICs0MCw4IEBACiAjdW5kZWYgQ09ORklHX1VTRV9JUlEJCQkvKiB3ZSBkb24ndCBuZWVkIElSUS9GSVEgc3R1ZmYgICAgICAqLwogCQkJCQkvKiBmb3IgdGltZXIvY29uc29sZS9ldGhlcm5ldCAgICAgICAqLwogCisjZGVmaW5lCUNPTkZJR19TWVNfVEVYVF9CQVNFCTB4MAorCiAvKiB3ZSB3aWxsIG5ldmVyIGVuYWJsZSBkY2FjaGUsIGJlY2F1c2Ugd2UgaGF2ZSB0byBzZXR1cCBNTVUgZmlyc3QgKi8KICNkZWZpbmUgQ09ORklHX1NZU19OT19EQ0FDSEUKIApAQCAtMTA4LDcgKzExMCw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCSgyNTYqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKICNkZWZpbmUgQ09ORklHX1NZU19MT05HSEVMUAkJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeSAgICAgICAgICovCiAjZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUCQkidWJvb3Q+ICIJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAgICAgICAqLwpAQCAtMTkzLDcgKzE5NCw3IEBACiAjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQkFTRSAgICAgICAgICBQSFlTX0ZMQVNIXzEKIAogI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCVBIWVNfU0RSQU1fMQotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShHRU5FUkFURURfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKIAogLyoKICAqIEpGRlMyIHBhcnRpdGlvbnMKQEAgLTM0Nyw2ICszNDgsOSBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfUFNTUl9WQUwJCTB4MzcKIAorI2RlZmluZQlDT05GSUdfU1lTX0NDQ1IJCQlDQ0NSX0wyN3xDQ0NSX00yfENDQ1JfTjEwCisjZGVmaW5lCUNPTkZJR19TWVNfQ0tFTgkJCTB4MAorCiAvKgogICogTWVtb3J5IHNldHRpbmdzCiAgKgpAQCAtNDgwLDYgKzQ4NCw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTUNJTzBfVkFMCQkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfTUNJTzFfVkFMCQkweDAwMDAwMDAwCiAKKyNkZWZpbmUJQ09ORklHX1NZU19GTFlDTkZHX1ZBTAkJMHgwMDAwMDAwMAorI2RlZmluZQlDT05GSUdfU1lTX1NYQ05GR19WQUwJCTB4MDAwMDAwMDAKKwogLyoKICNkZWZpbmUgQ1NCMjI2X1VTRVJfTEVEMAkweDAwMDAwMDA4CiAjZGVmaW5lIENTQjIyNl9VU0VSX0xFRDEJMHgwMDAwMDAxMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2ludGVncmF0b3JhcC5oIGIvaW5jbHVkZS9jb25maWdzL2ludGVncmF0b3JhcC5oCmluZGV4IGUwZTgyNTguLjMyZmYxOTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9pbnRlZ3JhdG9yYXAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvaW50ZWdyYXRvcmFwLmgKQEAgLTUzLDcgKzUzLDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBQTDAxMCBDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvaW50ZWdyYXRvcmNwLmggYi9pbmNsdWRlL2NvbmZpZ3MvaW50ZWdyYXRvcmNwLmgKaW5kZXggY2FhZmM5My4uMmM4Y2EyZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2ludGVncmF0b3JjcC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9pbnRlZ3JhdG9yY3AuaApAQCAtNDgsNyArNDgsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvaW50aXAuaCBiL2luY2x1ZGUvY29uZmlncy9pbnRpcC5oCmluZGV4IDU2ZDJiZTIuLjNmZjRhODYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9pbnRpcC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9pbnRpcC5oCkBAIC0xMDYsMTAgKzEwNiw5IEBACiAgKiBJbml0aWFsIFJBTSAmIHN0YWNrIHBvaW50ZXIgKHBsYWNlZCBpbiBPQ00pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0JBU0UJLyogT0NNICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECSg0IDw8IDEwKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMjU2CS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCSg0IDw8IDEwKQogI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCBcCi0JKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2lvLmggYi9pbmNsdWRlL2NvbmZpZ3MvaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjZjNzA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jb25maWdzL2lvLmgKQEAgLTAsMCArMSwyNTEgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMTAKKyAqIERpcmsgRWliYWNoLCAgR3VudGVybWFubiAmIERydW5jayBHbWJILCBlaWJhY2hAZ2RzeXMuZGUKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9fQ09ORklHX0gKKyNkZWZpbmUgX19DT05GSUdfSAorCisjZGVmaW5lIENPTkZJR180MDVFUAkJMQkvKiB0aGlzIGlzIGEgUFBDNDA1IENQVSAqLworI2RlZmluZSBDT05GSUdfNHh4CQkxCS8qICBtZW1iZXIgb2YgUFBDNHh4IGZhbWlseSAqLworI2RlZmluZSBDT05GSUdfSU8JICAgICAgICAxCS8qICBvbiBhIElvIGJvYXJkICovCisKKyNkZWZpbmUJQ09ORklHX1NZU19URVhUX0JBU0UJMHhGRkZDMDAwMAorCisvKgorICogSW5jbHVkZSBjb21tb24gZGVmaW5lcy9vcHRpb25zIGZvciBhbGwgQU1DQyBldmFsIGJvYXJkcworICovCisjZGVmaW5lIENPTkZJR19IT1NUTkFNRQkJaW8KKyNkZWZpbmUgQ09ORklHX0lERU5UX1NUUklORwkiIGlvIDAuMDQiCisjaW5jbHVkZSAiYW1jYy1jb21tb24uaCIKKworI2RlZmluZSBDT05GSUdfQk9BUkRfRUFSTFlfSU5JVF9GCS8qIGNhbGwgYm9hcmRfZWFybHlfaW5pdF9mICovCisjZGVmaW5lIENPTkZJR19MQVNUX1NUQUdFX0lOSVQJCS8qIGNhbGwgbGFzdF9zdGFnZV9pbml0ICovCisKKyNkZWZpbmUgQ09ORklHX1NZU19DTEtfRlJFUQkzMzMzMzMzMyAvKiBleHRlcm5hbCBmcmVxdWVuY3kgdG8gcGxsICAgKi8KKworLyoKKyAqIENvbmZpZ3VyZSBQTEwKKyAqLworI2RlZmluZSBQTExNUjBfREVGQVVMVCBQTExNUjBfMjY2XzEzM182NgorI2RlZmluZSBQTExNUjFfREVGQVVMVCBQTExNUjFfMjY2XzEzM182NgorCisvKiBuZXcgdUltYWdlIGZvcm1hdCBzdXBwb3J0ICovCisjZGVmaW5lIENPTkZJR19GSVQKKyNkZWZpbmUgQ09ORklHX0ZJVF9WRVJCT1NFCS8qIGVuYWJsZSBmaXRfZm9ybWF0X3tlcnJvcix3YXJuaW5nfSgpICovCisKKyNkZWZpbmUgQ09ORklHX0VOVl9JU19JTl9GTEFTSAkvKiB1c2UgRkxBU0ggZm9yIGVudmlyb25tZW50IHZhcnMgKi8KKworLyoKKyAqIERlZmF1bHQgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgKi8KKyNkZWZpbmUJQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUwkJCQkJXAorCUNPTkZJR19BTUNDX0RFRl9FTlYJCQkJCQlcCisJQ09ORklHX0FNQ0NfREVGX0VOVl9QT1dFUlBDCQkJCQlcCisJQ09ORklHX0FNQ0NfREVGX0VOVl9OT1JfVVBECQkJCQlcCisJImtlcm5lbF9hZGRyPWZjMDAwMDAwXDAiCQkJCQlcCisJImZkdF9hZGRyPWZjMWUwMDAwXDAiCQkJCQkJXAorCSJyYW1kaXNrX2FkZHI9ZmMyMDAwMDBcMCIJCQkJCVwKKwkiIgorCisjZGVmaW5lIENPTkZJR19QSFlfQUREUgkJNAkvKiBQSFkgYWRkcmVzcwkJCSovCisjZGVmaW5lIENPTkZJR19IQVNfRVRIMAorI2RlZmluZSBDT05GSUdfSEFTX0VUSDEKKyNkZWZpbmUgQ09ORklHX1BIWTFfQUREUgkweGMJLyogRU1BQzEgUEhZIGFkZHJlc3MJCSovCisjZGVmaW5lIENPTkZJR19QSFlfQ0xLX0ZSRVEJRU1BQ19TVEFDUl9DTEtfNjZNSFoKKworLyoKKyAqIENvbW1hbmRzIGFkZGl0aW9uYWwgdG8gdGhlIG9uZXMgZGVmaW5lZCBpbiBhbWNjLWNvbW1vbi5oCisgKi8KKyNkZWZpbmUgQ09ORklHX0NNRF9DQUNIRQorI3VuZGVmIENPTkZJR19DTURfRUVQUk9NCisKKy8qCisgKiBTRFJBTSBjb25maWd1cmF0aW9uIChwbGVhc2Ugc2VlIGNwdS9wcGMvc2RyYW0uW2NoXSkKKyAqLworI2RlZmluZSBDT05GSUdfU0RSQU1fQkFOSzAJMQkvKiBpbml0IG9uYm9hcmQgU0RSQU0gYmFuayAwICovCisKKy8qIFNEUkFNIHRpbWluZ3MgdXNlZCBpbiBkYXRhc2hlZXQgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9DTCAgICAgICAgICAgICAzCS8qIENBUyBsYXRlbmN5ICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fdFJQICAgICAgICAgICAyMAkvKiBQUkVDSEFSR0UgY29tbWFuZCBwZXJpb2QgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV90UkMgICAgICAgICAgIDY2CS8qIEFDVElWRS10by1BQ1RJVkUgcGVyaW9kICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fdFJDRCAgICAgICAgICAyMAkvKiBBQ1RJVkUtdG8tUkVBRCBkZWxheSAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX3RSRkMgICAgICAgICAgNjYJLyogQXV0byByZWZyZXNoIHBlcmlvZCAqLworCisvKgorICogSWYgQ09ORklHX1NZU19FWFRfU0VSSUFMX0NMT0NLLCB0aGVuIHRoZSBVQVJUIGRpdmlzb3IgaXMgMS4KKyAqIElmIENPTkZJR19TWVNfNDA1X1VBUlRfRVJSQVRBXzU5LCB0aGVuIFVBUlQgZGl2aXNvciBpcyAzMS4KKyAqIE90aGVyd2lzZSwgVUFSVCBkaXZpc29yIGlzIGRldGVybWluZWQgYnkgQ1BVIENsb2NrIGFuZCBDT05GSUdfU1lTX0JBU0VfQkFVRC4KKyAqIFRoZSBMaW51eCBCQVNFX0JBVUQgZGVmaW5lIHNob3VsZCBtYXRjaCB0aGlzIGNvbmZpZ3VyYXRpb24uCisgKiAgICBiYXNlQmF1ZCA9IGNwdUNsb2NrLyh1YXJ0RGl2aXNvcioxNikKKyAqIElmIENPTkZJR19TWVNfNDA1X1VBUlRfRVJSQVRBXzU5IGFuZCAyMDBNSHogQ1BVIGNsb2NrLAorICogc2V0IExpbnV4IEJBU0VfQkFVRCB0byA0MDMyMDAuCisgKi8KKyNkZWZpbmUgQ09ORklHX0NPTlNfSU5ERVgJMQkvKiBVc2UgVUFSVDAJCQkqLworI3VuZGVmICBDT05GSUdfU1lTX0VYVF9TRVJJQUxfQ0xPQ0sJLyogZXh0ZXJuYWwgc2VyaWFsIGNsb2NrICovCisjdW5kZWYgIENPTkZJR19TWVNfNDA1X1VBUlRfRVJSQVRBXzU5CS8qIDQwNUdQL0NSIFJldi4gRCBzaWxpY29uICovCisjZGVmaW5lIENPTkZJR19TWVNfQkFTRV9CQVVECQk2OTEyMDAKKworLyoKKyAqIEkyQyBzdHVmZgorICovCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX1NQRUVECQkxMDAwMDAKKworLyogVGVtcCBzZW5zb3IvaHdtb24vZHR0ICovCisjZGVmaW5lIENPTkZJR19EVFRfTE02MwkJMQkvKiBOYXRpb25hbCBMTTYzCSovCisjZGVmaW5lIENPTkZJR19EVFRfU0VOU09SUwl7IDAgfQkvKiBTZW5zb3IgYWRkcmVzc2VzCSovCisjZGVmaW5lIENPTkZJR19EVFRfUFdNX0xPT0tVUFRBQkxFCVwKKwkJeyB7IDQwLCAxMCB9LCB7IDUwLCAyMCB9LCB7IDYwLCA0MCB9IH0KKyNkZWZpbmUgQ09ORklHX0RUVF9UQUNIX0xJTUlUCTB4YTEwCisKKy8qCisgKiBGTEFTSCBvcmdhbml6YXRpb24KKyAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0NGSQkJLyogVGhlIGZsYXNoIGlzIENGSSBjb21wYXRpYmxlCSovCisjZGVmaW5lIENPTkZJR19GTEFTSF9DRklfRFJJVkVSCQkvKiBVc2UgY29tbW9uIENGSSBkcml2ZXIJKi8KKworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBU0UJCTB4RkMwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQU5LU19MSVNUCXsgQ09ORklHX1NZU19GTEFTSF9CQVNFIH0KKworI2RlZmluZSBDT05GSUdfU1lTX01BWF9GTEFTSF9CQU5LUwkxCS8qIG1heCBudW0gb2YgbWVtb3J5IGJhbmtzICovCisjZGVmaW5lIENPTkZJR19TWVNfTUFYX0ZMQVNIX1NFQ1QJNTEyCS8qIG1heCBudW0gb2Ygc2VjdG9ycyBwZXIgY2hpcCovCisKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9FUkFTRV9UT1VUCTEyMDAwMAkvKiBUaW1lb3V0IGZvciBGbGFzaCBFcmFzZS9tcyAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX1dSSVRFX1RPVVQJNTAwCS8qIFRpbWVvdXQgZm9yIEZsYXNoIFdyaXRlL21zICovCisKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9VU0VfQlVGRkVSX1dSSVRFIDEJLyogdXNlIGJ1ZmYnZCB3cml0ZXMgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9QUk9URUNUSU9OCTEJLyogdXNlIGhhcmR3YXJlIGZsYXNoIHByb3RlY3QgKi8KKworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0VNUFRZX0lORk8JLyogJ0UnIGZvciBlbXB0eSBzZWN0b3Igb24gZmxpbmZvICovCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfUVVJRVRfVEVTVAkxCS8qIG5vIHdhcm4gdXBvbiB1bmtub3duIGZsYXNoICovCisKKyNpZmRlZiBDT05GSUdfRU5WX0lTX0lOX0ZMQVNICisjZGVmaW5lIENPTkZJR19FTlZfU0VDVF9TSVpFCTB4MjAwMDAJLyogc2l6ZSBvZiBvbmUgY29tcGxldGUgc2VjdG9yICovCisjZGVmaW5lIENPTkZJR19FTlZfQUREUgkJKCgtQ09ORklHX1NZU19NT05JVE9SX0xFTiktQ09ORklHX0VOVl9TRUNUX1NJWkUpCisjZGVmaW5lCUNPTkZJR19FTlZfU0laRQkJMHgyMDAwCS8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgU2VjdG9yICovCisKKy8qIEFkZHJlc3MgYW5kIHNpemUgb2YgUmVkdW5kYW50IEVudmlyb25tZW50IFNlY3RvcgkqLworI2RlZmluZSBDT05GSUdfRU5WX0FERFJfUkVEVU5ECShDT05GSUdfRU5WX0FERFItQ09ORklHX0VOVl9TRUNUX1NJWkUpCisjZGVmaW5lIENPTkZJR19FTlZfU0laRV9SRURVTkQJKENPTkZJR19FTlZfU0laRSkKKyNlbmRpZgorCisvKiBHYml0IFBIWXMgKi8KKyNkZWZpbmUgQ09ORklHX0JJVEJBTkdNSUkJCS8qIGJpdC1iYW5nIE1JSSBQSFkgbWFuYWdlbWVudCAqLworI2RlZmluZSBDT05GSUdfQklUQkFOR01JSV9NVUxUSQorCisjZGVmaW5lIENPTkZJR19TWVNfTURJT19QSU4gICgweDgwMDAwMDAwID4+IDEzKQkvKiBvdXIgTURJTyBpcyBHUElPMCAqLworI2RlZmluZSBDT05GSUdfU1lTX01EQ19QSU4gICAoMHg4MDAwMDAwMCA+PiA3KQkvKiBvdXIgTURDICBpcyBHUElPNyAqLworCisjZGVmaW5lIENPTkZJR19TWVNfR0JJVF9NSUlfQlVTTkFNRQkiaW9fbWlpcGh5IgorCisvKgorICogUFBDNDA1IEdQSU8gQ29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19TWVNfNHh4X0dQSU9fVEFCTEUgeyAvKiBHUElPCUFsdGVybmF0ZTEJKi8gXAoreyBcCisvKiBHUElPIENvcmUgMCAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8wCVBlckJMYXN0ICovIFwKK3sgR1BJT19CQVNFLCBHUElPX09VVCwgR1BJT19TRUwsICBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzEJVFMxRSAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8yCVRTMkUgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fSU4sICBHUElPX1NFTCwgIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMwlUUzFPICovIFwKK3sgR1BJT19CQVNFLCBHUElPX09VVCwgR1BJT19TRUwsICBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzQJVFMyTyAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfMSAgICAgIH0sIC8qIEdQSU81CVRTMyAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19JTiwgIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU82CVRTNCAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfMSAgICAgIH0sIC8qIEdQSU83CVRTNSAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU84CVRTNiAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU85CVRyY0NsayAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8xMAlQZXJDUzEgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fT1VULCBHUElPX0FMVDEsIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMTEJUGVyQ1MyICovIFwKK3sgR1BJT19CQVNFLCBHUElPX09VVCwgR1BJT19BTFQxLCBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzEyCVBlckNTMyAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19JTiwgIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8xMwlQZXJDUzQgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fT1VULCBHUElPX0FMVDEsIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMTQJUGVyQWRkcjAzICovIFwKK3sgR1BJT19CQVNFLCBHUElPX09VVCwgR1BJT19BTFQxLCBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzE1CVBlckFkZHIwNCAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8xNglQZXJBZGRyMDUgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fSU4sICBHUElPX0FMVDEsIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMTcJSVJRMCAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19JTiwgIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8xOAlJUlExICovIFwKK3sgR1BJT19CQVNFLCBHUElPX0lOLCAgR1BJT19BTFQxLCBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzE5CUlSUTIgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fSU4sICBHUElPX1NFTCwgIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMjAJSVJRMyAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8yMQlJUlE0ICovIFwKK3sgR1BJT19CQVNFLCBHUElPX09VVCwgR1BJT19TRUwsICBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzIyCUlSUTUgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fSU4sICBHUElPX1NFTCwgIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMjMJSVJRNiAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19JTiwgIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8yNAlVQVJUMF9EQ0QgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fSU4sICBHUElPX0FMVDEsIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMjUJVUFSVDBfRFNSICovIFwKK3sgR1BJT19CQVNFLCBHUElPX0lOLCAgR1BJT19BTFQxLCBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzI2CVVBUlQwX1JJICovIFwKK3sgR1BJT19CQVNFLCBHUElPX09VVCwgR1BJT19BTFQxLCBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzI3CVVBUlQwX0RUUiAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19JTiwgIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8yOAlVQVJUMV9SeCAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8yOQlVQVJUMV9UeCAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8zMAlSZWplY3RQa3QwICovIFwKK3sgR1BJT19CQVNFLCBHUElPX0lOLCAgR1BJT19TRUwsICBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzMxCVJlamVjdFBrdDEgKi8gXAorfSBcCit9CisKKy8qCisgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIGRhdGEgY2FjaGUpCisgKi8KKy8qIHVzZSBvbiBjaGlwIG1lbW9yeSAoT0NNKSBmb3IgdGVtcGVyYXJ5IHN0YWNrIHVudGlsIHNkcmFtIGlzIHRlc3RlZCAqLworI2RlZmluZSBDT05GSUdfU1lTX1RFTVBfU1RBQ0tfT0NNICAgICAgICAxCisKKy8qIE9uIENoaXAgTWVtb3J5IGxvY2F0aW9uICovCisjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUgkweEY4MDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfU0laRQkweDEwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0RBVEFfQUREUiAvKiBpbiBTRFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSAqLworCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjggIC8qIHNpemUvYnl0ZXMgcmVzJ2QgZm9yIGluaXQgZGF0YSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIFwKKwkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKKworLyoKKyAqIEV4dGVybmFsIEJ1cyBDb250cm9sbGVyIChFQkMpIFNldHVwCisgKi8KKworLyogTWVtb3J5IEJhbmsgMCAoTk9SLUZMQVNIKSBpbml0aWFsaXphdGlvbiAqLworI2RlZmluZSBDT05GSUdfU1lTX0VCQ19QQjBBUAkJMHhhMzgyYTg4MAorLyogQkFTPTB4RkMwLEJTPTY0TUIsQlU9Ui9XLEJXPTE2Yml0ICovCisjZGVmaW5lIENPTkZJR19TWVNfRUJDX1BCMENSCQkweEZDMERBMDAwCisKKy8qIE1lbW9yeSBCYW5rIDEgKE5WUkFNKSBpbml0aWFsaXphdGlvICovCisjZGVmaW5lIENPTkZJR19TWVNfRUJDX1BCMUFQCQkweDkyMDE1NDgwCisvKiBCQVM9MHhGRjgsQlM9NE1CLEJVPVIvVyxCVz04Yml0ICAqLworI2RlZmluZSBDT05GSUdfU1lTX0VCQ19QQjFDUgkJMHg3ZjMxODAwMAorCisvKiBNZW1vcnkgQmFuayAyIChGUEdBKSBpbml0aWFsaXphdGlvbiAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZQR0FfQkFTRQkJMHg3ZjEwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0VCQ19QQjJBUAkJMHgwMjAyNTA4MAorLyogQkFTPTB4N2YxLEJTPTFNQixCVT1SL1csQlc9MTZiaXQgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19FQkNfUEIyQ1IJCTB4N2YxMWEwMDAKKworI2RlZmluZSBDT05GSUdfU1lTX0ZQR0FfUkZMX0xPVwkJMHgwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRlBHQV9SRkxfSElHSAkweDNmZmUKKworLyogTWVtb3J5IEJhbmsgMyAoTGF0Y2hlcykgaW5pdGlhbGl6YXRpb24gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19MQVRDSF9CQVNFCQkweDdmMjAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRUJDX1BCM0FQCQkweGEyMDE1NDgwCisvKiBCQVM9MHg3ZjIsQlM9MU1CLEJVPVIvVyxCVz0xNmJpdCAqLworI2RlZmluZSBDT05GSUdfU1lTX0VCQ19QQjNDUgkJMHg3ZjIxYTAwMAorCisjZGVmaW5lIENPTkZJR19TWVNfTEFUQ0gwX1JFU0VUCQkweGZmZmYKKyNkZWZpbmUgQ09ORklHX1NZU19MQVRDSDBfQk9PVAkJMHhmZmZmCisjZGVmaW5lIENPTkZJR19TWVNfTEFUQ0gxX1JFU0VUCQkweGZmYmYKKyNkZWZpbmUgQ09ORklHX1NZU19MQVRDSDFfQk9PVAkJMHhmZmZmCisKKyNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvaW9jb24uaCBiL2luY2x1ZGUvY29uZmlncy9pb2Nvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNjFiMTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvaW9jb24uaApAQCAtMCwwICsxLDI1MiBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAxMAorICogRGlyayBFaWJhY2gsICBHdW50ZXJtYW5uICYgRHJ1bmNrIEdtYkgsIGVpYmFjaEBnZHN5cy5kZQorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX19DT05GSUdfSAorI2RlZmluZSBfX0NPTkZJR19ICisKKyNkZWZpbmUgQ09ORklHXzQwNUVQCQkxCS8qIHRoaXMgaXMgYSBQUEM0MDUgQ1BVICovCisjZGVmaW5lIENPTkZJR180eHgJCTEJLyogIG1lbWJlciBvZiBQUEM0eHggZmFtaWx5ICovCisjZGVmaW5lIENPTkZJR19JT0NPTgkJMQkvKiAgb24gYSBJb0NvbiBib2FyZCAqLworCisjZGVmaW5lCUNPTkZJR19TWVNfVEVYVF9CQVNFCTB4RkZGQzAwMDAKKworLyoKKyAqIEluY2x1ZGUgY29tbW9uIGRlZmluZXMvb3B0aW9ucyBmb3IgYWxsIEFNQ0MgZXZhbCBib2FyZHMKKyAqLworI2RlZmluZSBDT05GSUdfSE9TVE5BTUUJCWlvY29uCisjZGVmaW5lIENPTkZJR19JREVOVF9TVFJJTkcJIiBpb2NvbiAwLjAzIgorI2luY2x1ZGUgImFtY2MtY29tbW9uLmgiCisKKyNkZWZpbmUgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfRgkvKiBjYWxsIGJvYXJkX2Vhcmx5X2luaXRfZiAqLworI2RlZmluZSBDT05GSUdfTEFTVF9TVEFHRV9JTklUCisKKyNkZWZpbmUgQ09ORklHX1NZU19DTEtfRlJFUQkzMzMzMzMzMyAvKiBleHRlcm5hbCBmcmVxdWVuY3kgdG8gcGxsICAgKi8KKworLyoKKyAqIENvbmZpZ3VyZSBQTEwKKyAqLworI2RlZmluZSBQTExNUjBfREVGQVVMVCBQTExNUjBfMjY2XzEzM182NgorI2RlZmluZSBQTExNUjFfREVGQVVMVCBQTExNUjFfMjY2XzEzM182NgorCisvKiBuZXcgdUltYWdlIGZvcm1hdCBzdXBwb3J0ICovCisjZGVmaW5lIENPTkZJR19GSVQKKyNkZWZpbmUgQ09ORklHX0ZJVF9WRVJCT1NFCS8qIGVuYWJsZSBmaXRfZm9ybWF0X3tlcnJvcix3YXJuaW5nfSgpICovCisKKyNkZWZpbmUgQ09ORklHX0VOVl9JU19JTl9GTEFTSAkvKiB1c2UgRkxBU0ggZm9yIGVudmlyb25tZW50IHZhcnMgKi8KKworLyoKKyAqIERlZmF1bHQgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgKi8KKyNkZWZpbmUJQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUwkJCQkJXAorCUNPTkZJR19BTUNDX0RFRl9FTlYJCQkJCQlcCisJQ09ORklHX0FNQ0NfREVGX0VOVl9QT1dFUlBDCQkJCQlcCisJQ09ORklHX0FNQ0NfREVGX0VOVl9OT1JfVVBECQkJCQlcCisJImtlcm5lbF9hZGRyPWZjMDAwMDAwXDAiCQkJCQlcCisJImZkdF9hZGRyPWZjMWUwMDAwXDAiCQkJCQkJXAorCSJyYW1kaXNrX2FkZHI9ZmMyMDAwMDBcMCIJCQkJCVwKKwkiIgorCisjZGVmaW5lIENPTkZJR19QSFlfQUREUgkJNAkvKiBQSFkgYWRkcmVzcwkJCSovCisjZGVmaW5lIENPTkZJR19IQVNfRVRIMAorI2RlZmluZSBDT05GSUdfUEhZX0NMS19GUkVRICAgIEVNQUNfU1RBQ1JfQ0xLXzY2TUhaCisKKy8qCisgKiBDb21tYW5kcyBhZGRpdGlvbmFsIHRvIHRoZSBvbmVzIGRlZmluZWQgaW4gYW1jYy1jb21tb24uaAorICovCisjZGVmaW5lIENPTkZJR19DTURfQ0FDSEUKKyN1bmRlZiBDT05GSUdfQ01EX0VFUFJPTQorCisvKgorICogU0RSQU0gY29uZmlndXJhdGlvbiAocGxlYXNlIHNlZSBjcHUvcHBjL3NkcmFtLltjaF0pCisgKi8KKyNkZWZpbmUgQ09ORklHX1NEUkFNX0JBTkswCTEJLyogaW5pdCBvbmJvYXJkIFNEUkFNIGJhbmsgMCAqLworCisvKiBTRFJBTSB0aW1pbmdzIHVzZWQgaW4gZGF0YXNoZWV0ICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQ0wgICAgICAgICAgICAgMwkvKiBDQVMgbGF0ZW5jeSAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX3RSUCAgICAgICAgICAgMjAJLyogUFJFQ0hBUkdFIGNvbW1hbmQgcGVyaW9kICovCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fdFJDICAgICAgICAgICA2NgkvKiBBQ1RJVkUtdG8tQUNUSVZFIHBlcmlvZCAqLworI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX3RSQ0QgICAgICAgICAgMjAJLyogQUNUSVZFLXRvLVJFQUQgZGVsYXkgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV90UkZDICAgICAgICAgIDY2CS8qIEF1dG8gcmVmcmVzaCBwZXJpb2QgKi8KKworLyoKKyAqIElmIENPTkZJR19TWVNfRVhUX1NFUklBTF9DTE9DSywgdGhlbiB0aGUgVUFSVCBkaXZpc29yIGlzIDEuCisgKiBJZiBDT05GSUdfU1lTXzQwNV9VQVJUX0VSUkFUQV81OSwgdGhlbiBVQVJUIGRpdmlzb3IgaXMgMzEuCisgKiBPdGhlcndpc2UsIFVBUlQgZGl2aXNvciBpcyBkZXRlcm1pbmVkIGJ5IENQVSBDbG9jayBhbmQgQ09ORklHX1NZU19CQVNFX0JBVUQuCisgKiBUaGUgTGludXggQkFTRV9CQVVEIGRlZmluZSBzaG91bGQgbWF0Y2ggdGhpcyBjb25maWd1cmF0aW9uLgorICogICAgYmFzZUJhdWQgPSBjcHVDbG9jay8odWFydERpdmlzb3IqMTYpCisgKiBJZiBDT05GSUdfU1lTXzQwNV9VQVJUX0VSUkFUQV81OSBhbmQgMjAwTUh6IENQVSBjbG9jaywKKyAqIHNldCBMaW51eCBCQVNFX0JBVUQgdG8gNDAzMjAwLgorICovCisjZGVmaW5lIENPTkZJR19DT05TX0lOREVYCQkxCS8qIFVzZSBVQVJUMCAqLworI3VuZGVmICBDT05GSUdfU1lTX0VYVF9TRVJJQUxfQ0xPQ0sJCS8qIGV4dGVybmFsIHNlcmlhbCBjbG9jayAqLworI3VuZGVmICBDT05GSUdfU1lTXzQwNV9VQVJUX0VSUkFUQV81OQkJLyogNDA1R1AvQ1IgUmV2LiBEIHNpbGljb24gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19CQVNFX0JBVUQJCTY5MTIwMAorCisvKgorICogSTJDIHN0dWZmCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfU1BFRUQJCTQwMDAwMAorCisvKiBlbmFibGUgSTJDIGFuZCBzZWxlY3QgdGhlIGhhcmR3YXJlL3NvZnR3YXJlIGRyaXZlciAqLworI3VuZGVmICBDT05GSUdfSEFSRF9JMkMJCQkvKiBJMkMgd2l0aCBoYXJkd2FyZSBzdXBwb3J0CSovCisjZGVmaW5lIENPTkZJR19TT0ZUX0kyQwkJMQkvKiBJMkMgYml0LWJhbmdlZAkJKi8KKworLyoKKyAqIFNvZnR3YXJlIChiaXQtYmFuZykgSTJDIGRyaXZlciBjb25maWd1cmF0aW9uCisgKi8KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KK3ZvaWQgZnBnYV9ncGlvX3NldChpbnQgcGluKTsKK3ZvaWQgZnBnYV9ncGlvX2NsZWFyKGludCBwaW4pOworaW50IGZwZ2FfZ3Bpb19nZXQoaW50IHBpbik7CisjZW5kaWYKKworI2RlZmluZSBJMkNfQUNUSVZFCXsgfQorI2RlZmluZSBJMkNfVFJJU1RBVEUJeyB9CisjZGVmaW5lIEkyQ19SRUFECWZwZ2FfZ3Bpb19nZXQoMHgwMDQwKSA/IDEgOiAwCisjZGVmaW5lIEkyQ19TREEoYml0KQlpZiAoYml0KSBmcGdhX2dwaW9fc2V0KDB4MDA0MCk7IFwKKwkJCWVsc2UgZnBnYV9ncGlvX2NsZWFyKDB4MDA0MCkKKyNkZWZpbmUgSTJDX1NDTChiaXQpCWlmIChiaXQpIGZwZ2FfZ3Bpb19zZXQoMHgwMDIwKTsgXAorCQkJZWxzZSBmcGdhX2dwaW9fY2xlYXIoMHgwMDIwKQorI2RlZmluZSBJMkNfREVMQVkJdWRlbGF5KDI1KQkvKiAxLzQgSTJDIGNsb2NrIGR1cmF0aW9uICovCisKKy8qCisgKiBGTEFTSCBvcmdhbml6YXRpb24KKyAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0NGSQkJLyogVGhlIGZsYXNoIGlzIENGSSBjb21wYXRpYmxlCSovCisjZGVmaW5lIENPTkZJR19GTEFTSF9DRklfRFJJVkVSCQkvKiBVc2UgY29tbW9uIENGSSBkcml2ZXIJKi8KKworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBU0UJCTB4RkMwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQU5LU19MSVNUCXsgQ09ORklHX1NZU19GTEFTSF9CQVNFIH0KKworI2RlZmluZSBDT05GSUdfU1lTX01BWF9GTEFTSF9CQU5LUwkxCS8qIG1heCBudW0gb2YgbWVtb3J5IGJhbmtzICovCisjZGVmaW5lIENPTkZJR19TWVNfTUFYX0ZMQVNIX1NFQ1QJNTEyCS8qIG1heCBudW0gb2Ygc2VjdG9ycyBwZXIgY2hpcCovCisKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9FUkFTRV9UT1VUCTEyMDAwMAkvKiBUaW1lb3V0IGZvciBGbGFzaCBFcmFzZS9tcyAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX1dSSVRFX1RPVVQJNTAwCS8qIFRpbWVvdXQgZm9yIEZsYXNoIFdyaXRlL21zICovCisKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9VU0VfQlVGRkVSX1dSSVRFIDEJLyogdXNlIGJ1ZmYnZCB3cml0ZXMgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9QUk9URUNUSU9OCTEJLyogdXNlIGhhcmR3YXJlIGZsYXNoIHByb3RlY3QgKi8KKworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0VNUFRZX0lORk8JLyogJ0UnIGZvciBlbXB0eSBzZWN0b3Igb24gZmxpbmZvICovCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfUVVJRVRfVEVTVAkxCS8qIG5vIHdhcm4gdXBvbiB1bmtub3duIGZsYXNoICovCisKKyNpZmRlZiBDT05GSUdfRU5WX0lTX0lOX0ZMQVNICisjZGVmaW5lIENPTkZJR19FTlZfU0VDVF9TSVpFCTB4MjAwMDAJLyogc2l6ZSBvZiBvbmUgY29tcGxldGUgc2VjdG9yICovCisjZGVmaW5lIENPTkZJR19FTlZfQUREUgkJKCgtQ09ORklHX1NZU19NT05JVE9SX0xFTiktQ09ORklHX0VOVl9TRUNUX1NJWkUpCisjZGVmaW5lCUNPTkZJR19FTlZfU0laRQkJMHgyMDAwCS8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgU2VjdG9yICovCisKKy8qIEFkZHJlc3MgYW5kIHNpemUgb2YgUmVkdW5kYW50IEVudmlyb25tZW50IFNlY3RvcgkqLworI2RlZmluZSBDT05GSUdfRU5WX0FERFJfUkVEVU5ECShDT05GSUdfRU5WX0FERFItQ09ORklHX0VOVl9TRUNUX1NJWkUpCisjZGVmaW5lIENPTkZJR19FTlZfU0laRV9SRURVTkQJKENPTkZJR19FTlZfU0laRSkKKyNlbmRpZgorCisvKgorICogUFBDNDA1IEdQSU8gQ29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19TWVNfNHh4X0dQSU9fVEFCTEUgeyAvKiBHUElPCUFsdGVybmF0ZTEJKi8gXAoreyBcCisvKiBHUElPIENvcmUgMCAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8wCVBlckJMYXN0ICovIFwKK3sgR1BJT19CQVNFLCBHUElPX09VVCwgR1BJT19TRUwsICBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzEJVFMxRSAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8yCVRTMkUgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fSU4sICBHUElPX1NFTCwgIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMwlUUzFPICovIFwKK3sgR1BJT19CQVNFLCBHUElPX09VVCwgR1BJT19TRUwsICBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzQJVFMyTyAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfMSAgICAgIH0sIC8qIEdQSU81CVRTMyAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19JTiwgIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU82CVRTNCAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU83CVRTNSAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU84CVRTNiAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU85CVRyY0NsayAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8xMAlQZXJDUzEgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fT1VULCBHUElPX0FMVDEsIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMTEJUGVyQ1MyICovIFwKK3sgR1BJT19CQVNFLCBHUElPX09VVCwgR1BJT19BTFQxLCBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzEyCVBlckNTMyAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8xMwlQZXJDUzQgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fT1VULCBHUElPX0FMVDEsIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMTQJUGVyQWRkcjAzICovIFwKK3sgR1BJT19CQVNFLCBHUElPX09VVCwgR1BJT19BTFQxLCBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzE1CVBlckFkZHIwNCAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8xNglQZXJBZGRyMDUgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fSU4sICBHUElPX0FMVDEsIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMTcJSVJRMCAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19JTiwgIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8xOAlJUlExICovIFwKK3sgR1BJT19CQVNFLCBHUElPX0lOLCAgR1BJT19BTFQxLCBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzE5CUlSUTIgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fSU4sICBHUElPX1NFTCwgIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMjAJSVJRMyAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8yMQlJUlE0ICovIFwKK3sgR1BJT19CQVNFLCBHUElPX09VVCwgR1BJT19TRUwsICBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzIyCUlSUTUgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fSU4sICBHUElPX1NFTCwgIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMjMJSVJRNiAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19JTiwgIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8yNAlVQVJUMF9EQ0QgKi8gXAoreyBHUElPX0JBU0UsIEdQSU9fSU4sICBHUElPX0FMVDEsIEdQSU9fT1VUX05PX0NIRyB9LCAvKiBHUElPMjUJVUFSVDBfRFNSICovIFwKK3sgR1BJT19CQVNFLCBHUElPX0lOLCAgR1BJT19BTFQxLCBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzI2CVVBUlQwX1JJICovIFwKK3sgR1BJT19CQVNFLCBHUElPX09VVCwgR1BJT19BTFQxLCBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzI3CVVBUlQwX0RUUiAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19JTiwgIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8yOAlVQVJUMV9SeCAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fQUxUMSwgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8yOQlVQVJUMV9UeCAqLyBcCit7IEdQSU9fQkFTRSwgR1BJT19PVVQsIEdQSU9fU0VMLCAgR1BJT19PVVRfTk9fQ0hHIH0sIC8qIEdQSU8zMAlSZWplY3RQa3QwICovIFwKK3sgR1BJT19CQVNFLCBHUElPX0lOLCAgR1BJT19TRUwsICBHUElPX09VVF9OT19DSEcgfSwgLyogR1BJTzMxCVJlamVjdFBrdDEgKi8gXAorfSBcCit9CisKKy8qCisgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIGRhdGEgY2FjaGUpCisgKi8KKy8qIHVzZSBvbiBjaGlwIG1lbW9yeSAoT0NNKSBmb3IgdGVtcGVyYXJ5IHN0YWNrIHVudGlsIHNkcmFtIGlzIHRlc3RlZCAqLworI2RlZmluZSBDT05GSUdfU1lTX1RFTVBfU1RBQ0tfT0NNICAgICAgICAxCisKKy8qIE9uIENoaXAgTWVtb3J5IGxvY2F0aW9uICovCisjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUgkweEY4MDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfU0laRQkweDEwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0RBVEFfQUREUiAvKiBpbiBTRFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSAqLworCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjggIC8qIHNpemUvYnl0ZXMgcmVzJ2QgZm9yIGluaXQgZGF0YSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIFwKKwkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKKworLyoKKyAqIEV4dGVybmFsIEJ1cyBDb250cm9sbGVyIChFQkMpIFNldHVwCisgKi8KKworLyogTWVtb3J5IEJhbmsgMCAoTk9SLUZMQVNIKSBpbml0aWFsaXphdGlvbiAqLworI2RlZmluZSBDT05GSUdfU1lTX0VCQ19QQjBBUAkJMHhhMzgyYTg4MAorI2RlZmluZSBDT05GSUdfU1lTX0VCQ19QQjBDUgkJMHhGQzBEQTAwMAorCisvKiBNZW1vcnkgQmFuayAxIChOVlJBTSkgaW5pdGlhbGl6YXRpbyAqLworI2RlZmluZSBDT05GSUdfU1lTX0VCQ19QQjFBUAkJMHg5MjAxNTQ4MAorI2RlZmluZSBDT05GSUdfU1lTX0VCQ19QQjFDUgkJMHhGQjg1ODAwMAorCisvKiBNZW1vcnkgQmFuayAyIChGUEdBKSBpbml0aWFsaXphdGlvbiAqLworI2RlZmluZSBDT05GSUdfU1lTX0ZQR0FfQkFTRQkJMHg3ZjEwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0VCQ19QQjJBUAkJMHgwMjgyNTA4MAorI2RlZmluZSBDT05GSUdfU1lTX0VCQ19QQjJDUgkJKENPTkZJR19TWVNfRlBHQV9CQVNFIHwgMHgxYTAwMCkKKworI2RlZmluZSBDT05GSUdfU1lTX0ZQR0FfUkZMX0xPVwkJMHgwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRlBHQV9SRkxfSElHSAkweDAwZmUKKworLyogTWVtb3J5IEJhbmsgMyAoTGF0Y2hlcykgaW5pdGlhbGl6YXRpb24gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19MQVRDSF9CQVNFCQkweDdmMjAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRUJDX1BCM0FQCQkweDAyMDI1MDgwCisjZGVmaW5lIENPTkZJR19TWVNfRUJDX1BCM0NSCQkweDdmMjFhMDAwCisKKyNkZWZpbmUgQ09ORklHX1NZU19MQVRDSDBfUkVTRVQJCTB4ZmZlZgorI2RlZmluZSBDT05GSUdfU1lTX0xBVENIMF9CT09UCQkweGZmZmYKKyNkZWZpbmUgQ09ORklHX1NZU19MQVRDSDFfUkVTRVQJCTB4ZmZmZgorI2RlZmluZSBDT05GSUdfU1lTX0xBVENIMV9CT09UCQkweGZmZmYKKworI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9pcGVrMDEuaCBiL2luY2x1ZGUvY29uZmlncy9pcGVrMDEuaAppbmRleCBjMzdiODNiLi5kMzgyMTM4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvaXBlazAxLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2lwZWswMS5oCkBAIC0yNjQsMTMgKzI2NCwxMiBAQAogLyogVXNlIFNSQU0gdW50aWwgUkFNIHdpbGwgYmUgYXZhaWxhYmxlICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglNUEM1WFhYX1NSQU0KIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCU1QQzVYWFhfU1JBTV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJTVBDNVhYWF9TUkFNX1NJWkUKIAogLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBcCi0JCQkJCSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBcCisJCQkJCSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCQlDT05GSUdfU1lTX1RFWFRfQkFTRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2l4ZHA0MjUuaCBiL2luY2x1ZGUvY29uZmlncy9peGRwNDI1LmgKaW5kZXggNzY4ZTgzNi4uMjhkNDFlMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2l4ZHA0MjUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvaXhkcDQyNS5oCkBAIC00Niw3ICs0Niw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4gICAgICAoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qIGFsbG93IHRvIG92ZXJ3cml0ZSBzZXJpYWwgYW5kIGV0aGFkZHIgKi8KICNkZWZpbmUgQ09ORklHX0VOVl9PVkVSV1JJVEUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9peGRwZzQyNS5oIGIvaW5jbHVkZS9jb25maWdzL2l4ZHBnNDI1LmgKaW5kZXggMGMwOTIzNC4uNjM3ZmQ3ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2l4ZHBnNDI1LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2l4ZHBnNDI1LmgKQEAgLTY4LDcgKzY4LDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDI1NiA8PCAxMCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyogYWxsb3cgdG8gb3ZlcndyaXRlIHNlcmlhbCBhbmQgZXRoYWRkciAqLwogI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2phZGVjcHUuaCBiL2luY2x1ZGUvY29uZmlncy9qYWRlY3B1LmgKaW5kZXggYTVkODc2NC4uYzExOTM5MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2phZGVjcHUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvamFkZWNwdS5oCkBAIC0xOTcsNyArMTk3LDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkoMHg0MDAwMDAgLSAweDgwMDApCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogMTI4IGJ5dGVzIGZvciBpbml0aWFsIGRhdGEgKi8KIAogI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFCSgzMioxMDI0KQkvKiByZWd1bGFyIHN0YWNrICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9qb3JuYWRhLmggYi9pbmNsdWRlL2NvbmZpZ3Mvam9ybmFkYS5oCmluZGV4IDY5YTA0NWMuLjRjYmJmMjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9qb3JuYWRhLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2pvcm5hZGEuaApAQCAtNDYsNyArNDYsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBzZWxlY3Qgc2VyaWFsIGNvbnNvbGUgY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2p1cGl0ZXIuaCBiL2luY2x1ZGUvY29uZmlncy9qdXBpdGVyLmgKaW5kZXggNmY1YWM5NC4uOGQyN2MwYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2p1cGl0ZXIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvanVwaXRlci5oCkBAIC0yMjUsMTEgKzIyNSwxMCBAQAogCiAvKiBVc2UgU1JBTSB1bnRpbCBSQU0gd2lsbCBiZSBhdmFpbGFibGUgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCU1QQzVYWFhfU1JBTQotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlNUEM1WFhYX1NSQU1fU0laRQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlNUEM1WFhYX1NSQU1fU0laRQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLwogCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRSAgICBDT05GSUdfU1lTX1RFWFRfQkFTRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2thdG1haS5oIGIvaW5jbHVkZS9jb25maWdzL2thdG1haS5oCmluZGV4IDEzNWE0YzIuLjNlZDhkYzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9rYXRtYWkuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mva2F0bWFpLmgKQEAgLTk2LDEwICs5Niw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfVEVNUF9TVEFDS19PQ00JMQogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX0FERFIJQ09ORklHX1NZU19JU1JBTV9CQVNFCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lTUkFNX0JBU0UJLyogSW5pdGlhbCBSQU0gYWRkcmVzcwkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDIwMDAJCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MjAwMAkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJKENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIC0gMHg0KQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mva2I5MjAyLmggYi9pbmNsdWRlL2NvbmZpZ3Mva2I5MjAyLmgKaW5kZXggNDFlYzFkNS4uYTJlZGFmOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2tiOTIwMi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9rYjkyMDIuaApAQCAtNjUsNyArNjUsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCShyb3VuZHVwKENPTkZJR19FTlZfU0laRSw0MDk2KSArIDEyOCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAjZGVmaW5lIENPTkZJR19CQVVEUkFURSAxMTUyMDAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2tpbGF1ZWEuaCBiL2luY2x1ZGUvY29uZmlncy9raWxhdWVhLmgKaW5kZXggZTE1M2IzMS4uMDMxZjhmYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2tpbGF1ZWEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mva2lsYXVlYS5oCkBAIC05Miw5ICs5Miw4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkoQ09ORklHX1NZU19TRFJBTV9CQVNFICsgKDMyIDw8IDIwKSkJLyogMzIgTWlCICovCiAjZW5kaWYgLyogZGVmaW5lZChDT05GSUdfU1lTX0lOSVRfRENBQ0hFX0NTKSAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5EICAgICAgICAoNCA8PCAxMCkJCQkvKiAgNCBLaUIgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTI1NgkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAgICAgICAgKDQgPDwgMTApCQkJLyogIDQgS2lCICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAogLyoKICAqIElmIHRoZSBkYXRhIGNhY2hlIGlzIGJlaW5nIHVzZWQgZm9yIHRoZSBwcmltb3JkaWFsIHN0YWNrIGFuZCBnbG9iYWwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9rbTh4eC5oIGIvaW5jbHVkZS9jb25maWdzL2ttOHh4LmgKaW5kZXggMmE0MmU5OS4uNzY4M2ZlNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2ttOHh4LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2ttOHh4LmgKQEAgLTEwNyw5ICsxMDcsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9rbV9hcm0uaCBiL2luY2x1ZGUvY29uZmlncy9rbV9hcm0uaAppbmRleCBmYWEwZjUwLi45ODZjNDZlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mva21fYXJtLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2ttX2FybS5oCkBAIC0xMDgsNyArMTA4LDYgQEAKICNkZWZpbmUgQ09ORklHX0tNX0NPTlNPTEVfVFRZCSJ0dHlTMCIKIAogLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKIAogLyoKICAqIE90aGVyIHJlcXVpcmVkIG1pbmltYWwgY29uZmlndXJhdGlvbnMKQEAgLTE4Myw1ICsxODIsNSBAQAogLyogYWRkaXRpb25zIGZvciBuZXcgcmVsb2NhdGlvbiBjb2RlLCBtdXN0IGJlIGFkZGVkIHRvIGFsbCBib2FyZHMgKi8KICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoMHgwMDAwMDAwMCArIDB4MTAwMCAtIC8qIEZpeCB0aGlzICovIFwKLQkJCQkJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorCQkJCQlHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNlbmRpZiAvKiBfQ09ORklHX0tNX0FSTV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mva21ldGVyMS5oIGIvaW5jbHVkZS9jb25maWdzL2ttZXRlcjEuaAppbmRleCAwM2QzYWFjLi44ZmNhZGZlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mva21ldGVyMS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9rbWV0ZXIxLmgKQEAgLTE3OSw5ICsxNzksOCBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweEU2MDAwMDAwIC8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkweDEwMCAvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMCAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAvKgogICogTG9jYWwgQnVzIENvbmZpZ3VyYXRpb24gJiBDbG9jayBTZXR1cApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2tvcmF0LmggYi9pbmNsdWRlL2NvbmZpZ3Mva29yYXQuaAppbmRleCAzYTA1MzFiLi42NmNiNTMzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mva29yYXQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mva29yYXQuaApAQCAtODgsOSArODgsOCBAQAogLyogNDQwRVB4IGhhcyAxNktCIG9mIGludGVybmFsIFNSQU0sIHNvIG5vIG5lZWQgZm9yIEQtQ2FjaGUJCSovCiAjdW5kZWYgQ09ORklHX1NZU19JTklUX1JBTV9EQ0FDSEUKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0JBU0UJLyogT0NNCQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJKDQgPDwgMTApCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkoNCA8PCAxMCkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCShDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAtIDB4NCkKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9rdm1lMDgwLmggYi9pbmNsdWRlL2NvbmZpZ3Mva3ZtZTA4MC5oCmluZGV4IGZhODc2MjUuLjk1ZmMyNDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9rdm1lMDgwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2t2bWUwODAuaApAQCAtMTE3LDkgKzExNyw4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQkFVRFJBVEVfVEFCTEUJeyA5NjAwLCAxOTIwMCwgMzg0MDAsIDU3NjAwLCAxMTUyMDAgfQogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4Ci0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MTAwMAorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQkFTRQkJMHg3QzAwMDAwMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2xhcnQuaCBiL2luY2x1ZGUvY29uZmlncy9sYXJ0LmgKaW5kZXggMmQzYjM2OS4uNzk1Y2YzNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2xhcnQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbGFydC5oCkBAIC00Miw3ICs0Miw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9saW5rc3RhdGlvbi5oIGIvaW5jbHVkZS9jb25maWdzL2xpbmtzdGF0aW9uLmgKaW5kZXggYWFmNjYzYS4uYjAwNjQ3YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2xpbmtzdGF0aW9uLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2xpbmtzdGF0aW9uLmgKQEAgLTI3NSw5ICsyNzUsOCBAQAogI2Vsc2UKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4NDAwMDAwMDAKICNlbmRpZgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDEwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDEwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFNlcmlhbCBjb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbHBjMjI5MnNvZGltbS5oIGIvaW5jbHVkZS9jb25maWdzL2xwYzIyOTJzb2RpbW0uaAppbmRleCA2NTI3NmEyLi5hMGZlMzJlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbHBjMjI5MnNvZGltbS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9scGMyMjkyc29kaW1tLmgKQEAgLTQ4LDcgKzQ4LDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAvKgogICogSGFyZHdhcmUgZHJpdmVycwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2xwZDdhNDAwLmggYi9pbmNsdWRlL2NvbmZpZ3MvbHBkN2E0MDAuaAppbmRleCBiZjRhNTdkLi4wNmYzZDdlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbHBkN2E0MDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbHBkN2E0MDAuaApAQCAtMzgsNyArMzgsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBzZWxlY3Qgc2VyaWFsIGNvbnNvbGUgY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2xwZDdhNDA0LmggYi9pbmNsdWRlL2NvbmZpZ3MvbHBkN2E0MDQuaAppbmRleCA1NTdmMzg5Li43NTM1ZjYyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbHBkN2E0MDQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbHBkN2E0MDQuaApAQCAtMzgsNyArMzgsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBzZWxlY3Qgc2VyaWFsIGNvbnNvbGUgY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2x1YW4uaCBiL2luY2x1ZGUvY29uZmlncy9sdWFuLmgKaW5kZXggZDgwMTQwNC4uM2I0NzYxYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2x1YW4uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbHVhbi5oCkBAIC04MCw5ICs4MCw4IEBACiAgKiBJbml0aWFsIFJBTSAmIHN0YWNrIHBvaW50ZXIgKHBsYWNlZCBpbiBTRFJBTSkKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lTUkFNX0JBU0UKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJKDggPDwgMTApCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJKDggPDwgMTApCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbHViYm9jay5oIGIvaW5jbHVkZS9jb25maWdzL2x1YmJvY2suaAppbmRleCAzYTk5ZWMyLi5iN2Q1M2I2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbHViYm9jay5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9sdWJib2NrLmgKQEAgLTQzLDcgKzQzLDcgQEAKICNkZWZpbmUgQ09ORklHX01NQwogI2RlZmluZSBCT0FSRF9MQVRFX0lOSVQJCTEKICNkZWZpbmUgQ09ORklHX0RPU19QQVJUSVRJT04KLQorI2RlZmluZQlDT05GSUdfU1lTX1RFWFRfQkFTRQkweDAKICN1bmRlZiBDT05GSUdfVVNFX0lSUQkJCS8qIHdlIGRvbid0IG5lZWQgSVJRL0ZJUSBzdHVmZiAqLwogCiAvKiB3ZSB3aWxsIG5ldmVyIGVuYWJsZSBkY2FjaGUsIGJlY2F1c2Ugd2UgaGF2ZSB0byBzZXR1cCBNTVUgZmlyc3QgKi8KQEAgLTUzLDcgKzUzLDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkgICAgKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAvKgogICogSGFyZHdhcmUgZHJpdmVycwpAQCAtMTc3LDcgKzE3Niw3IEBACiAjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQkFTRQkJUEhZU19GTEFTSF8xCiAKICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQlQSFlTX1NEUkFNXzEKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgKyBQSFlTX1NEUkFNXzEpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUgKyBQSFlTX1NEUkFNXzEpCiAKICNkZWZpbmUgRlBHQV9SRUdTX0JBU0VfUEhZU0lDQUwgMHgwODAwMDAwMAogCkBAIC0yMDIsNiArMjAxLDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX1BTU1JfVkFMCQkweDIwCiAKKyNkZWZpbmUJQ09ORklHX1NZU19DQ0NSCQkJQ0NDUl9MMjd8Q0NDUl9NMnxDQ0NSX04xMAorI2RlZmluZQlDT05GSUdfU1lTX0NLRU4JCQkweDAKKwogLyoKICAqIE1lbW9yeSBzZXR0aW5ncwogICovCkBAIC0yMTIsNiArMjE0LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19NRFJFRlJfVkFMCQkweDAwMDE4MDE4CiAjZGVmaW5lIENPTkZJR19TWVNfTURNUlNfVkFMCQkweDAwMDAwMDAwCiAKKyNkZWZpbmUJQ09ORklHX1NZU19GTFlDTkZHX1ZBTAkJMHgwMDAwMDAwMAorI2RlZmluZQlDT05GSUdfU1lTX1NYQ05GR19WQUwJCTB4MDAwMDAwMDAKKwogLyoKICAqIFBDTUNJQSBhbmQgQ0YgSW50ZXJmYWNlcwogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbHdtb24uaCBiL2luY2x1ZGUvY29uZmlncy9sd21vbi5oCmluZGV4IDEwNjI3NjUuLmUyM2IwYTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9sd21vbi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9sd21vbi5oCkBAIC0yNzUsOSArMjc1LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTM0OSwzMiArMzQ4LDMyIEBACiAKIC8qIExpc3Qgb2YgSTJDIGFkZHJlc3NlcyB0byBiZSB2ZXJpZmllZCBieSBQT1NUICovCiAjaWZkZWYgQ09ORklHX1VTRV9GUkFNCi0jZGVmaW5lIEkyQ19BRERSX0xJU1QJeyAgLyoJQ09ORklHX1NZU19JMkNfQVVESU9fQUREUiwgKi8JXAotCQkJCUNPTkZJR19TWVNfSTJDX1NZU01PTl9BRERSLAlcCi0JCQkJQ09ORklHX1NZU19JMkNfUlRDX0FERFIsCVwKLQkJCQlDT05GSUdfU1lTX0kyQ19QT1dFUl9BX0FERFIsCVwKLQkJCQlDT05GSUdfU1lTX0kyQ19QT1dFUl9CX0FERFIsCVwKLQkJCQlDT05GSUdfU1lTX0kyQ19LRVlCRF9BRERSLAlcCi0JCQkJQ09ORklHX1NZU19JMkNfUElDSU9fQUREUiwJXAotCQkJCUNPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSLAlcCi0JCQl9CisjZGVmaW5lIENPTkZJR19TWVNfUE9TVF9JMkNfQUREUlMJey8qIENPTkZJR19TWVNfSTJDX0FVRElPX0FERFIsICovIFwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1NZU01PTl9BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19SVENfQUREUiwJXAorCQkJCQkgQ09ORklHX1NZU19JMkNfUE9XRVJfQV9BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19QT1dFUl9CX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0tFWUJEX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1BJQ0lPX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSLAlcCisJCQkJCX0KICNlbHNlCS8qIFVzZSBFRVBST00gLSB3aGljaCBzaG93IHVwIG9uIDggY29uc2VxdXRpdmUgYWRkcmVzc2VzICovCi0jZGVmaW5lIEkyQ19BRERSX0xJU1QJeyAgLyoJQ09ORklHX1NZU19JMkNfQVVESU9fQUREUiwgKi8JXAotCQkJCUNPTkZJR19TWVNfSTJDX1NZU01PTl9BRERSLAlcCi0JCQkJQ09ORklHX1NZU19JMkNfUlRDX0FERFIsCVwKLQkJCQlDT05GSUdfU1lTX0kyQ19QT1dFUl9BX0FERFIsCVwKLQkJCQlDT05GSUdfU1lTX0kyQ19QT1dFUl9CX0FERFIsCVwKLQkJCQlDT05GSUdfU1lTX0kyQ19LRVlCRF9BRERSLAlcCi0JCQkJQ09ORklHX1NZU19JMkNfUElDSU9fQUREUiwJXAotCQkJCUNPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSKzAsCVwKLQkJCQlDT05GSUdfU1lTX0kyQ19FRVBST01fQUREUisxLAlcCi0JCQkJQ09ORklHX1NZU19JMkNfRUVQUk9NX0FERFIrMiwJXAotCQkJCUNPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSKzMsCVwKLQkJCQlDT05GSUdfU1lTX0kyQ19FRVBST01fQUREUis0LAlcCi0JCQkJQ09ORklHX1NZU19JMkNfRUVQUk9NX0FERFIrNSwJXAotCQkJCUNPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSKzYsCVwKLQkJCQlDT05GSUdfU1lTX0kyQ19FRVBST01fQUREUis3LAlcCi0JCQl9CisjZGVmaW5lIENPTkZJR19TWVNfUE9TVF9JMkNfQUREUlMJey8qIENPTkZJR19TWVNfSTJDX0FVRElPX0FERFIsICovIFwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1NZU01PTl9BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19SVENfQUREUiwJXAorCQkJCQkgQ09ORklHX1NZU19JMkNfUE9XRVJfQV9BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19QT1dFUl9CX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0tFWUJEX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1BJQ0lPX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSKzAsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSKzEsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSKzIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSKzMsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSKzQsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSKzUsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSKzYsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSKzcsCVwKKwkJCQkJfQogI2VuZGlmCS8qIENPTkZJR19VU0VfRlJBTSAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbHdtb241LmggYi9pbmNsdWRlL2NvbmZpZ3MvbHdtb241LmgKaW5kZXggZDAwMzcxMC4uNGM5NzQ0YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2x3bW9uNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9sd21vbjUuaApAQCAtODcsMTAgKzg3LDkgQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0RDQUNIRQkxCQkvKiBkLWNhY2hlIGFzIGluaXQgcmFtCSovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDcwMDAwMDAwCQkvKiBEQ2FjaGUgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCSg0IDw8IDEwKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMjU2CQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gXAotCQkJCQkgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJCSg0IDw8IDEwKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gXAorCQkJCQkgR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIC8qIHVudXNlZCBHUFQwIENPTVAgcmVnCSovCiAjZGVmaW5lIENPTkZJR19TWVNfUE9TVF9XT1JEX0FERFIJKENPTkZJR19TWVNfUEVSSVBIRVJBTF9CQVNFICsgR1BUMF9DT01QNikKQEAgLTE5Myw2ICsxOTIsMTcgQEAKICNkZWZpbmUgQ09ORklHX1NZU19QT1NUX1VBUlRfVEFCTEUJeyBDT05GSUdfU1lTX05TMTY1NTBfQ09NMSwgXAogCQkJQ09ORklHX1NZU19OUzE2NTUwX0NPTTIgfQogCisjZGVmaW5lIENPTkZJR19QT1NUX1VBUlQgIHsJCQkJXAorCSJVQVJUIHRlc3QiLAkJCQkJXAorCSJ1YXJ0IiwJCQkJCQlcCisJIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgVUFSVCBvcGVyYXRpb24uIiwJXAorCVBPU1RfUkFNIHwgUE9TVF9TTE9XVEVTVCB8IFBPU1RfQUxXQVlTIHwgUE9TVF9NQU5VQUwsCVwKKwkmdWFydF9wb3N0X3Rlc3QsCQkJCVwKKwlOVUxMLAkJCQkJCVwKKwlOVUxMLAkJCQkJCVwKKwlDT05GSUdfU1lTX1BPU1RfVUFSVAkJCQlcCisJfQorCiAjZGVmaW5lIENPTkZJR19QT1NUX1dBVENIRE9HICB7CQkJCVwKIAkiV2F0Y2hkb2cgdGltZXIgdGVzdCIsCQkJCVwKIAkid2F0Y2hkb2ciLAkJCQkJXApAQCAtMjk1LDE0ICszMDUsMTMgQEAKICNkZWZpbmUgQ09ORklHX1NZU19JMkNfS0VZQkRfQUREUgkweDU2CS8qIFBJQyBMV0Uga2V5Ym9hcmQJCSovCiAjZGVmaW5lIENPTkZJR19TWVNfSTJDX0RTUElDX0lPX0FERFIJMHg1NwkvKiBQSUMgSS9PIGFkZHIgICAgICAgICAgICAgICAqLwogCi0jZGVmaW5lIEkyQ19BRERSX0xJU1QJewkJCQkJCVwKLQkJCUNPTkZJR19TWVNfSTJDX1JUQ19BRERSLAkJCVwKLQkJCUNPTkZJR19TWVNfSTJDX0VFUFJPTV9DUFVfQUREUiwJCQlcCi0JCQlDT05GSUdfU1lTX0kyQ19FRVBST01fTUJfQUREUiwJCQlcCi0JCQlDT05GSUdfU1lTX0kyQ19EU1BJQ19BRERSLAkJCVwKLQkJCUNPTkZJR19TWVNfSTJDX0RTUElDXzJfQUREUiwJCQlcCi0JCQlDT05GSUdfU1lTX0kyQ19EU1BJQ19LRVlCX0FERFIsCQkJXAotCQkJQ09ORklHX1NZU19JMkNfRFNQSUNfSU9fQUREUiB9CisjZGVmaW5lIENPTkZJR19TWVNfUE9TVF9JMkNfQUREUlMJe0NPTkZJR19TWVNfSTJDX1JUQ19BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19FRVBST01fQ1BVX0FERFIsXAorCQkJCQkgQ09ORklHX1NZU19JMkNfRUVQUk9NX01CX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0RTUElDX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0RTUElDXzJfQUREUiwJXAorCQkJCQkgQ09ORklHX1NZU19JMkNfRFNQSUNfS0VZQl9BRERSLFwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0RTUElDX0lPX0FERFIgfQogCiAvKgogICogUGFzcyBvcGVuIGZpcm13YXJlIGZsYXQgdHJlZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL201MDFzay5oIGIvaW5jbHVkZS9jb25maWdzL201MDFzay5oCmluZGV4IDI2YzJiY2IuLjY4ZjA0MTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9tNTAxc2suaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbTUwMXNrLmgKQEAgLTc3LDcgKzc3LDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIEJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCQkxMTUyMDAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL21ha2FsdS5oIGIvaW5jbHVkZS9jb25maWdzL21ha2FsdS5oCmluZGV4IGM0ODUzYWIuLmZjYzc4OWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9tYWthbHUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbWFrYWx1LmgKQEAgLTg4LDkgKzg4LDggQEAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCShDT05GSUdfU1lTX1NEUkFNX0JBU0UgKyAoMzIgPDwgMjApKQkvKiAzMiBNaUIgKi8KICNlbmRpZiAvKiBkZWZpbmVkKENPTkZJR19TWVNfSU5JVF9EQ0FDSEVfQ1MpICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgICAgICg0IDw8IDEwKQkJCS8qICA0IEtpQiAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMjU2CQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICAgICAgICAoNCA8PCAxMCkJCQkvKiAgNCBLaUIgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAvKgogICogSWYgdGhlIGRhdGEgY2FjaGUgaXMgYmVpbmcgdXNlZCBmb3IgdGhlIHByaW1vcmRpYWwgc3RhY2sgYW5kIGdsb2JhbApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL21hbnJvbGFuZC9tcGM1MjAwLWNvbW1vbi5oIGIvaW5jbHVkZS9jb25maWdzL21hbnJvbGFuZC9tcGM1MjAwLWNvbW1vbi5oCmluZGV4IDdiZTEzNTQuLjNlNDEzMWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9tYW5yb2xhbmQvbXBjNTIwMC1jb21tb24uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbWFucm9sYW5kL21wYzUyMDAtY29tbW9uLmgKQEAgLTExMyw5ICsxMTMsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX01CQVIJCTB4RjAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19ERUZBVUxUX01CQVIJMHg4MDAwMDAwMAogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC1cCi0JCQkJCSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLVwKKwkJCQkJIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCkBAIC0xMzUsOSArMTM0LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCU1QQzVYWFhfU1JBTQogI2lmZGVmIENPTkZJR19QT1NUCiAvKiBwcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIHBvc3Rfd29yZCBhdCBlbmQgb2Ygb24tY2hpcCBTUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9QT1NUX1NJWkUKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9QT1NUX1NJWkUKICNlbHNlCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlNUEM1WFhYX1NSQU1fU0laRQogI2VuZGlmCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UgICAgQ09ORklHX1NZU19URVhUX0JBU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tY2MyMDAuaCBiL2luY2x1ZGUvY29uZmlncy9tY2MyMDAuaAppbmRleCA0ZDk0NmFiLi5mMWNkYzQwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbWNjMjAwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21jYzIwMC5oCkBAIC0yNTksMTEgKzI1OSwxMCBAQAogCiAvKiBVc2UgU1JBTSB1bnRpbCBSQU0gd2lsbCBiZSBhdmFpbGFibGUgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCU1QQzVYWFhfU1JBTQotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlNUEM1WFhYX1NSQU1fU0laRQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlNUEM1WFhYX1NSQU1fU0laRQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLwogCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlDT05GSUdfU1lTX1RFWFRfQkFTRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL21jdTI1LmggYi9pbmNsdWRlL2NvbmZpZ3MvbWN1MjUuaAppbmRleCA0YWVmNmZjLi5hMTYyMjkxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbWN1MjUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbWN1MjUuaApAQCAtNzEsOSArNzEsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX1RFTVBfU1RBQ0tfT0NNCTEKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSCS8qIE9DTQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAkoQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgLSAweDQpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tZWNwNTEyMy5oIGIvaW5jbHVkZS9jb25maWdzL21lY3A1MTIzLmgKaW5kZXggMWU4MmJjNS4uYjljZjFkYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL21lY3A1MTIzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21lY3A1MTIzLmgKQEAgLTIwNiwxMCArMjA2LDkgQEAKIAogLyogVXNlIFNSQU0gZm9yIGluaXRpYWwgc3RhY2sgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfU1JBTV9CQVNFIC8qIEluaXQgUkFNIGFkZHIgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCUNPTkZJR19TWVNfU1JBTV9TSVpFCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJQ09ORklHX1NZU19TUkFNX1NJWkUKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMHgxMDAJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQkJQ09ORklHX1NZU19URVhUX0JBU0UJLyogU3RhcnQgb2YgbW9uaXRvciAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL21lY3A1MjAwLmggYi9pbmNsdWRlL2NvbmZpZ3MvbWVjcDUyMDAuaAppbmRleCAwMzZiNzkwLi45OTYxZjEyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbWVjcDUyMDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbWVjcDUyMDAuaApAQCAtMjE1LDExICsyMTUsMTAgQEAKIAogLyogVXNlIFNSQU0gdW50aWwgUkFNIHdpbGwgYmUgYXZhaWxhYmxlICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglNUEM1WFhYX1NSQU0KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1NJWkUJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJTVBDNVhYWF9TUkFNX1NJWkUJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KIAogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UgICAgQ09ORklHX1NZU19URVhUX0JBU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tZWVzYy5oIGIvaW5jbHVkZS9jb25maWdzL21lZXNjLmgKaW5kZXggZGJiMjUzMS4uNDFhOTUzZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL21lZXNjLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21lZXNjLmgKQEAgLTE4Miw3ICsxODIsNiBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJUk9VTkQoMyAqIENPTkZJR19FTlZfU0laRSArIFwKIAkJCQkJMTI4KjEwMjQsIDB4MTAwMCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiAxMjggYnl0ZXMgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJCSgzMiAqIDEwMjQpCS8qIHJlZ3VsYXIgc3RhY2sgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL21nY29nZS5oIGIvaW5jbHVkZS9jb25maWdzL21nY29nZS5oCmluZGV4IDRkY2Q2NzkuLjZkZWMwZWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9tZ2NvZ2UuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbWdjb2dlLmgKQEAgLTE3OCw5ICsxNzgsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX0lNTVIJCTB4RjAwMDAwMDAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MjAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MjAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyogSGFyZCByZXNldCBjb25maWd1cmF0aW9uIHdvcmQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9taWNyb2JsYXplLWdlbmVyaWMuaCBiL2luY2x1ZGUvY29uZmlncy9taWNyb2JsYXplLWdlbmVyaWMuaAppbmRleCBiY2RkODZlLi43NWU0ZTA3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbWljcm9ibGF6ZS1nZW5lcmljLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21pY3JvYmxhemUtZ2VuZXJpYy5oCkBAIC0xMzUsMTUgKzEzNSwxNCBAQAogI2RlZmluZQlDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkoQ09ORklHX1NZU19TRFJBTV9CQVNFICsgMHgxMDAwKQogCiAvKiBnbG9iYWwgcG9pbnRlciAqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4IC8qIHNpemUgb2YgZ2xvYmFsIGRhdGEgKi8KIC8qIHN0YXJ0IG9mIGdsb2JhbCBkYXRhICovCiAjZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIFwKIAkoQ09ORklHX1NZU19TRFJBTV9CQVNFICsgQ09ORklHX1NZU19TRFJBTV9TSVpFIFwKLQkJCQktIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKwkJCQktIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAvKiBtb25pdG9yIGNvZGUgKi8KICNkZWZpbmUJU0laRQkJCQkweDQwMDAwCi0jZGVmaW5lCUNPTkZJR19TWVNfTU9OSVRPUl9MRU4JCShTSVpFIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX01PTklUT1JfQkFTRQlcCiAJCQkoQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgLSBDT05GSUdfU1lTX01PTklUT1JfTEVOKQogI2RlZmluZQlDT05GSUdfU1lTX01PTklUT1JfRU5EIFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tb2RuZXQ1MC5oIGIvaW5jbHVkZS9jb25maWdzL21vZG5ldDUwLmgKaW5kZXggNzRiYWI1Zi4uNTc3MDdmMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL21vZG5ldDUwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21vZG5ldDUwLmgKQEAgLTQ2LDcgKzQ2LDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbW90aW9ucHJvLmggYi9pbmNsdWRlL2NvbmZpZ3MvbW90aW9ucHJvLmgKaW5kZXggOTM1YjViOS4uYmRjYWU1OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL21vdGlvbnByby5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9tb3Rpb25wcm8uaApAQCAtNDcsMjkgKzQ3LDI3IEBACiAjZGVmaW5lIENPTkZJR19CT09UUF9HQVRFV0FZCiAjZGVmaW5lIENPTkZJR19CT09UUF9IT1NUTkFNRQogCi0KIC8qCiAgKiBDb21tYW5kIGxpbmUgY29uZmlndXJhdGlvbi4KICAqLwogI2luY2x1ZGUgPGNvbmZpZ19jbWRfZGVmYXVsdC5oPgogCiAjZGVmaW5lIENPTkZJR19DTURfQVNLRU5WCi0jZGVmaW5lIENPTkZJR19DTURfREhDUAotI2RlZmluZSBDT05GSUdfQ01EX1JFR0lORk8KLSNkZWZpbmUgQ09ORklHX0NNRF9JTU1BUAotI2RlZmluZSBDT05GSUdfQ01EX0VMRgotI2RlZmluZSBDT05GSUdfQ01EX01JSQogI2RlZmluZSBDT05GSUdfQ01EX0JFREJVRworI2RlZmluZSBDT05GSUdfQ01EX0RBVEUKKyNkZWZpbmUgQ09ORklHX0NNRF9ESENQCisjZGVmaW5lIENPTkZJR19DTURfRFRUCisjZGVmaW5lIENPTkZJR19DTURfRUVQUk9NCisjZGVmaW5lIENPTkZJR19DTURfRUxGCisjZGVmaW5lIENPTkZJR19DTURfRkFUCisjZGVmaW5lIENPTkZJR19DTURfSTJDCisjZGVmaW5lIENPTkZJR19DTURfSURFCisjZGVmaW5lIENPTkZJR19DTURfSU1NQVAKKyNkZWZpbmUgQ09ORklHX0NNRF9KRkZTMgorI2RlZmluZSBDT05GSUdfQ01EX01JSQogI2RlZmluZSBDT05GSUdfQ01EX05FVAogI2RlZmluZSBDT05GSUdfQ01EX1BJTkcKLSNkZWZpbmUgQ09ORklHX0NNRF9JREUKLSNkZWZpbmUgQ09ORklHX0NNRF9GQVQKLSNkZWZpbmUgQ09ORklHX0NNRF9KRkZTMgotI2RlZmluZSBDT05GSUdfQ01EX0kyQwotI2RlZmluZSBDT05GSUdfQ01EX0RBVEUKLSNkZWZpbmUgQ09ORklHX0NNRF9FRVBST00KLSNkZWZpbmUgQ09ORklHX0NNRF9EVFQKLQorI2RlZmluZSBDT05GSUdfQ01EX1JFR0lORk8KIAogLyoKICAqIFNlcmlhbCBjb25zb2xlIGNvbmZpZ3VyYXRpb24KQEAgLTc5LDcgKzc3LDYgQEAKICNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkxMTUyMDAKICNkZWZpbmUgQ09ORklHX1NZU19CQVVEUkFURV9UQUJMRQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCwgMjMwNDAwIH0KIAotCiAvKgogICogRXRoZXJuZXQgY29uZmlndXJhdGlvbgogICovCkBAIC0xMDEsMTEgKzk4LDE0IEBACiAjZGVmaW5lIENPTkZJR19BVVRPQk9PVF9QUk9NUFQJIkF1dG9ib290aW5nIGluICVkIHNlY29uZHMsICIJCVwKIAkJCQkicHJlc3MgXCI8RXNjPjxFc2M+XCIgdG8gc3RvcFxuIiwgYm9vdGRlbGF5CiAKKyNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkJMQkvKiBhZGQgY29tbWFuZCBsaW5lIGhpc3RvcnkJKi8KKyNkZWZpbmUJQ09ORklHX1NZU19IVVNIX1BBUlNFUgkJMQkvKiB1c2UgImh1c2giIGNvbW1hbmQgcGFyc2VyCSovCisjZGVmaW5lCUNPTkZJR19TWVNfUFJPTVBUX0hVU0hfUFMyCSI+ICIKKwogI2RlZmluZSBDT05GSUdfRVRIQUREUgkJMDA6NTA6QzI6NDA6MTA6MDAKICNkZWZpbmUgQ09ORklHX09WRVJXUklURV9FVEhBRERSX09OQ0UJMQogI2RlZmluZSBDT05GSUdfVkVSU0lPTl9WQVJJQUJMRQkxCS8qIGluY2x1ZGUgdmVyc2lvbiBlbnYgdmFyaWFibGUgKi8KIAotCiAvKgogICogRGVmYXVsdCBlbnZpcm9ubWVudCBzZXR0aW5ncwogICovCkBAIC0xMTcsMjEgKzExNywyMiBAQAogCSJzZXJ2ZXJpcD0xOTIuMTY4LjEuMVwwIgkJCQkJXAogCSJnYXRld2F5aXA9MTkyLjE2OC4xLjFcMCIJCQkJCVwKIAkiY29uc29sZT10dHlQU0MwLDExNTIwMFwwIgkJCQkJXAotCSJ1LWJvb3RfYWRkcj0xMDAwMDBcMCIJCQkJCQlcCi0JImtlcm5lbF9hZGRyPTIwMDAwMFwwIgkJCQkJCVwKLQkiZmR0X2FkZHI9NDAwMDAwXDAiCQkJCQkJXAotCSJyYW1kaXNrX2FkZHI9NTAwMDAwXDAiCQkJCQkJXAorCSJ1LWJvb3RfYWRkcj00MDAwMDBcMCIJCQkJCQlcCisJImtlcm5lbF9hZGRyPTQwMDAwMFwwIgkJCQkJCVwKKwkiZmR0X2FkZHI9NzAwMDAwXDAiCQkJCQkJXAorCSJyYW1kaXNrX2FkZHI9ODAwMDAwXDAiCQkJCQkJXAogCSJtdWx0aV9pbWFnZV9hZGRyPTgwMDAwMFwwIgkJCQkJXAotCSJyb290cGF0aD0vb3B0L2VsZGstNC4xL3BwY182eHhcMCIJCQkJXAotCSJ1LWJvb3Q9L3RmdHBib290L21vdGlvbnByby91LWJvb3QuYmluXDAiCQkJXAotCSJib290ZmlsZT0vdGZ0cGJvb3QvbW90aW9ucHJvL3VJbWFnZVwwIgkJCQlcCi0JImZkdF9maWxlPS90ZnRwYm9vdC9tb3Rpb25wcm8vbW90aW9ucHJvLmR0YlwwIgkJCVwKLQkicmFtZGlza19maWxlPS90ZnRwYm9vdC9tb3Rpb25wcm8vdVJhbWRpc2tcMCIJCQlcCisJInJvb3RwYXRoPS9vcHQvZWxkay9wcGNfNnh4XDAiCQkJCQlcCisJInUtYm9vdD1tb3Rpb25wcm8vdS1ib290LmJpblwwIgkJCQkJXAorCSJib290ZmlsZT1tb3Rpb25wcm8vdUltYWdlXDAiCQkJCQlcCisJImZkdF9maWxlPW1vdGlvbnByby9tb3Rpb25wcm8uZHRiXDAiCQkJCVwKKwkicmFtZGlza19maWxlPW1vdGlvbnByby91UmFtZGlza1wwIgkJCQlcCiAJIm11bHRpX2ltYWdlX2ZpbGU9a2VybmVsK2luaXRyZCtkdGIuaW1nXDAiCQkJXAogCSJsb2FkPXRmdHAgJHt1LWJvb3RfYWRkcn0gJHt1LWJvb3R9XDAiCQkJCVwKLQkidXBkYXRlPXByb3Qgb2ZmIGZmZjAwMDAwIGZmZjNmZmZmOyBlcmEgZmZmMDAwMDAgZmZmM2ZmZmY7ICIJXAorCSJ1cGRhdGU9cHJvdCBvZmYgZmZmMDAwMDAgKyR7ZmlsZXNpemV9OyIJCQlcCisJCSJlcmEgZmZmMDAwMDAgKyR7ZmlsZXNpemV9OyAiCQkJCVwKIAkJImNwLmIgJHt1LWJvb3RfYWRkcn0gZmZmMDAwMDAgJHtmaWxlc2l6ZX07IgkJXAotCQkicHJvdCBvbiBmZmYwMDAwMCBmZmYzZmZmZlwwIgkJCQlcCisJCSJwcm90IG9uIGZmZjAwMDAwICske2ZpbGVzaXplfVwwIgkJCVwKIAkicmFtYXJncz1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L3JhbSByd1wwIgkJCVwKIAkibmZzYXJncz1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L25mcyBydyAiCQkJXAogCQkibmZzcm9vdD0ke3NlcnZlcmlwfToke3Jvb3RwYXRofVwwIgkJCVwKQEAgLTE2MCwyNCArMTYxLDIwIEBACiAgKi8KICNkZWZpbmUgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfUgkxCiAKLQogLyoKICAqIExvdyBsZXZlbCBjb25maWd1cmF0aW9uCiAgKi8KIAotCiAvKgogICogQ2xvY2sgY29uZmlndXJhdGlvbjogU1lTX1hUQUxJTiA9IDMzTUh6CiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NUEM1WFhYX0NMS0lOCTMzMDAwMDAwCiAKLQogLyoKICAqIFNldCBJUEIgc3BlZWQgdG8gMTAwTUh6CiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JUEJDTEtfRVFVQUxTX1hMQkNMSwogCi0KIC8qCiAgKiBNZW1vcnkgbWFwCiAgKi8KQEAgLTE4Niw3ICsxODMsNyBAQAogICogU2V0dGluZyBNQkFSIHRvIG90aGVyd2lzZSB3aWxsIGNhdXNlIHN5c3RlbSBoYW5nIHdoZW4gdXNpbmcgU21hcnRETUEgc3VjaAogICogYXMgbmV0d29yayBjb21tYW5kcy4KICAqLwotI2RlZmluZSBDT05GSUdfU1lTX01CQVIJCTB4ZjAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19NQkFSCQkJMHhmMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCTB4MDAwMDAwMDAKIAogLyoKQEAgLTIwMywxMCArMjAwLDkgQEAKIAogLyogVXNlIFNSQU0gdW50aWwgUkFNIHdpbGwgYmUgYXZhaWxhYmxlICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglNUEM1WFhYX1NSQU0KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1NJWkUKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9TSVpFCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlDT05GSUdfU1lTX1RFWFRfQkFTRQpAQCAtMjE4LDcgKzIxNCw2IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDEwMjQgPDwgMTApCS8qIDEgTWlCIGZvciBtYWxsb2MoKSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0JPT1RNQVBTWgkJKDggPDwgMjApCS8qIGluaXRpYWwgbWVtIG1hcCBmb3IgTGludXggKi8KIAotCiAvKgogICogQ2hpcCBzZWxlY3RzIGNvbmZpZ3VyYXRpb24KICAqLwpAQCAtMjUxLDcgKzI0Niw2IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQ1NfQlVSU1QJCTB4MDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19DU19ERUFEQ1lDTEUJMHgyMjIyMjIyMgogCi0KIC8qCiAgKiBTRFJBTSBjb25maWd1cmF0aW9uCiAgKi8KQEAgLTI2MSw3ICsyNTUsNiBAQAogI2RlZmluZSBTRFJBTV9DT05UUk9MCQkweDUwNGYwMDAwCiAjZGVmaW5lIFNEUkFNX01PREUJCTB4MDBjZDAwMDAKIAotCiAvKgogICogRmxhc2ggY29uZmlndXJhdGlvbgogICovCkBAIC0yOTksNyArMjkyLDYgQEAKICNkZWZpbmUgQ09ORklHX1NZU19BVEFfU1RSSURFCQk0CiAjZGVmaW5lIENPTkZJR19ET1NfUEFSVElUSU9OCiAKLQogLyoKICAqIEkyQyBjb25maWd1cmF0aW9uCiAgKi8KQEAgLTMwOCw3ICszMDAsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX0kyQ19TUEVFRAkJMTAwMDAwCS8qIDEwMCBrSHogKi8KICNkZWZpbmUgQ09ORklHX1NZU19JMkNfU0xBVkUJCTB4N0YKIAotCiAvKgogICogRUVQUk9NIGNvbmZpZ3VyYXRpb24KICAqLwpAQCAtMzE3LDE0ICszMDgsMTIgQEAKICNkZWZpbmUgQ09ORklHX1NZU19FRVBST01fUEFHRV9XUklURV9ERUxBWV9NUwk1CS8qIDJtcy9jeWNsZSArIDNtcyBleHRyYSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0kyQ19NVUxUSV9FRVBST01TCQkxCS8qIDIgRUVQUk9NcyAoYWRkcjo1MCw1MikgKi8KIAotCiAvKgogICogUlRDIGNvbmZpZ3VyYXRpb24KICAqLwogI2RlZmluZSBDT05GSUdfUlRDX0RTMTMzNwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSTJDX1JUQ19BRERSCTB4NjgKIAotCiAvKgogICogU3RhdHVzIExFRCBjb25maWd1cmF0aW9uCiAgKi8KQEAgLTM0NiwxNCArMzM1LDEyIEBACiBleHRlcm4gdm9pZCBfX2xlZF9zZXQobGVkX2lkX3QgaWQsIGludCBzdGF0ZSk7CiAjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCiAKLQogLyoKICAqIFRlbXBlcmF0dXJlIHNlbnNvcgogICovCiAjZGVmaW5lIENPTkZJR19EVFRfTE03NQkJMQogI2RlZmluZSBDT05GSUdfRFRUX1NFTlNPUlMJeyAweDQ5IH0KIAotCiAvKgogICogRW52aXJvbm1lbnQgc2V0dGluZ3MKICAqLwpAQCAtMzgxLDEzICszNjgsMTEgQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0dQU19QT1JUX0NPTkZJRwkweDExMDVhMDA0CiAKLQogLyoKICAqIE1vdGlvbi1QUk8ncyBDUExEIHJldmlzaW9uIGNvbnRyb2wgcmVnaXN0ZXIKICAqLwogI2RlZmluZSBDUExEX1JFVl9SRUdJU1RFUgkoQ09ORklHX1NZU19DUzJfU1RBUlQgKyAweDA2KQogCi0KIC8qCiAgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCiAgKi8KQEAgLTQwNiw3ICszOTEsNiBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfSFoJCQkxMDAwCS8qIGRlY3JlbWVudGVyIGZyZXE6IDEgbXMgdGlja3MgKi8KIAotCiAvKgogICogVmFyaW91cyBsb3ctbGV2ZWwgc2V0dGluZ3MKICAqLwpAQCAtNDE1LDcgKzM5OSw2IEBACiAKICNkZWZpbmUgQ09ORklHX1NZU19DQUNIRUxJTkVfU0laRQkzMgkvKiBGb3IgTVBDNXh4eCBDUFVzICovCiAKLQogLyogTm90IG5lZWRlZCBmb3IgTVBDIDV4eHggVS1Cb290LCBidXQgdXNlZCBieSB0b29scy91cGRhdGVyICovCiAjZGVmaW5lIENPTkZJR19TWVNfUkVTRVRfQUREUkVTUwkweGZmZjAwMTAwCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tcDJ1c2IuaCBiL2luY2x1ZGUvY29uZmlncy9tcDJ1c2IuaAppbmRleCAzMTM4YjQ5Li45NTY2MDNhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbXAydXNiLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21wMnVzYi5oCkBAIC04MSw3ICs4MSw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAjZGVmaW5lIENPTkZJR19CQVVEUkFURQkJMTE1MjAwCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tcGM1MTIxLWNvbW1vbi5oIGIvaW5jbHVkZS9jb25maWdzL21wYzUxMjEtY29tbW9uLmgKaW5kZXggYWZhZTFhYi4uYTVlNzdjNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL21wYzUxMjEtY29tbW9uLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21wYzUxMjEtY29tbW9uLmgKQEAgLTI1LDExICsyNSwxMCBAQAogCiAvKiBVc2UgU1JBTSBmb3IgaW5pdGlhbCBzdGFjayAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19TUkFNX0JBU0UgLyogSW5pdCBSQU0gYmFzZSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJQ09ORklHX1NZU19TUkFNX1NJWkUgLyogRW5kIG9mIGFyZWEgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCUNPTkZJR19TWVNfU1JBTV9TSVpFIC8qIFNpemUgb2YgYXJlYSAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkweDEwMAkvKiBudW0gYnl0ZXMgb2YgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIFwKLQkJCQkJIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIFwKKwkJCQkJIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCShDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAtIDB4NCkKIAogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHgwMDIwMDAwMAkvKiBtZW10ZXN0IHJlZ2lvbiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL21wYzUxMjFhZHMuaCBiL2luY2x1ZGUvY29uZmlncy9tcGM1MTIxYWRzLmgKaW5kZXggZmJjYzgzOS4uZjk2NjMyNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL21wYzUxMjFhZHMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbXBjNTEyMWFkcy5oCkBAIC0yNzAsMTAgKzI3MCw5IEBACiAKIC8qIFVzZSBTUkFNIGZvciBpbml0aWFsIHN0YWNrICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX1NSQU1fQkFTRQkJLyogSW5pdGlhbCBSQU0gYWRkcmVzcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX1NSQU1fU0laRQkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCUNPTkZJR19TWVNfU1JBTV9TSVpFCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMHgxMDAJCQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJQ09ORklHX1NZU19URVhUX0JBU0UJCS8qIFN0YXJ0IG9mIG1vbml0b3IgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tcGM3NDQ4aHBjMi5oIGIvaW5jbHVkZS9jb25maWdzL21wYzc0NDhocGMyLmgKaW5kZXggOTRhOGM5My4uOTI3NDQ2NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL21wYzc0NDhocGMyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21wYzc0NDhocGMyLmgKQEAgLTIyMSwxMCArMjIxLDkgQEAKICAqLwogI3VuZGVmICBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4MDdkMDAwMDAJLyogdW51c2VkIG1lbW9yeSByZWdpb24gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwLyogbGFyZ2VyIHNwYWNlIC0gd2UgaGF2ZSBTRFJBTSBpbml0aWFsaXplZCAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwLyogbGFyZ2VyIHNwYWNlIC0gd2UgaGF2ZSBTRFJBTSBpbml0aWFsaXplZCAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0IGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFN0YXJ0IGFkZHJlc3NlcyBmb3IgdGhlIGZpbmFsIG1lbW9yeSBjb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbXBjODMwOF9wMW0uaCBiL2luY2x1ZGUvY29uZmlncy9tcGM4MzA4X3AxbS5oCmluZGV4IDE0ZjY2M2YuLmQ3YTNhOTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9tcGM4MzA4X3AxbS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9tcGM4MzA4X3AxbS5oCkBAIC0yMjAsMTAgKzIyMCw5IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4RTYwMDAwMDAgLyogSW5pdGlhbCBSQU0gYWRkcmVzcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJMHgxMDAwIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkweDEwMCAvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJMHgxMDAwIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAlcCi0JKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAogLyoKICAqIExvY2FsIEJ1cyBDb25maWd1cmF0aW9uICYgQ2xvY2sgU2V0dXAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tcHIyLmggYi9pbmNsdWRlL2NvbmZpZ3MvbXByMi5oCmluZGV4IDBhNDcyYTYuLjMxMWY1MjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9tcHIyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21wcjIuaApAQCAtNTcsNyArNTcsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlDT05GSUdfU1lTX0ZMQVNIX0JBU0UKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDEyOCAqIDEwMjQpCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDI1NiAqIDEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYKIAogLyogTWVtb3J5ICovCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJMHg4QzAwMDAwMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL21zNzcyMHNlLmggYi9pbmNsdWRlL2NvbmZpZ3MvbXM3NzIwc2UuaAppbmRleCAwZWEzNTI3Li41MzA0MjM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbXM3NzIwc2UuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbXM3NzIwc2UuaApAQCAtNzYsNyArNzYsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlNUzc3MjBTRV9GTEFTSF9CQVNFXzEKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDEyOCAqIDEwMjQpCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDI1NiAqIDEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYKICNkZWZpbmUgQ09ORklHX1NZU19CT09UTUFQU1oJCSg4ICogMTAyNCAqIDEwMjQpCiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL21zNzcyMnNlLmggYi9pbmNsdWRlL2NvbmZpZ3MvbXM3NzIyc2UuaAppbmRleCAwMjUxNDI4Li4xZGRhZGY2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbXM3NzIyc2UuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbXM3NzIyc2UuaApAQCAtODksNyArODksNiBAQAogCQkJCQkJCWluIEZsYXNoIChOT1QgcnVuIHRpbWUgYWRkcmVzcyBpbiBTRFJBTSkgPyE/ICovCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JKDEyOCAqIDEwMjQpCQkvKiAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JKDI1NiAqIDEwMjQpCQkvKiBTaXplIG9mIERSQU0gcmVzZXJ2ZWQgZm9yIG1hbGxvYygpIHVzZSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJKDI1NikJCS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0JPT1RNQVBTWgkoOCAqIDEwMjQgKiAxMDI0KQogCiAvKiBGTEFTSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL21zNzc1MHNlLmggYi9pbmNsdWRlL2NvbmZpZ3MvbXM3NzUwc2UuaAppbmRleCAwMjA5MGYyLi45YjQzYWNiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbXM3NzUwc2UuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbXM3NzUwc2UuaApAQCAtODEsNyArODEsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMTI4ICogMTAyNCkKICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMjU2ICogMTAyNCkJCS8qIFNpemUgb2YgRFJBTSByZXNlcnZlZCBmb3IgbWFsbG9jKCkgdXNlICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCSgyNTYpCQkJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAjZGVmaW5lIENPTkZJR19TWVNfQk9PVE1BUFNaCQkoOCAqIDEwMjQgKiAxMDI0KQogI2RlZmluZSBDT05GSUdfU1lTX1JYX0VUSF9CVUZGRVIJKDgpCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tdWFzMzAwMS5oIGIvaW5jbHVkZS9jb25maWdzL211YXMzMDAxLmgKaW5kZXggMzQ1YmRkMS4uOGIzMDIyYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL211YXMzMDAxLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL211YXMzMDAxLmgKQEAgLTI2MCw5ICsyNjAsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX0RFRkFVTFRfSU1NUgkweDBGMDEwMDAwCiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDIwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDIwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qIEhhcmQgcmVzZXQgY29uZmlndXJhdGlvbiB3b3JkICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbXVuaWNlcy5oIGIvaW5jbHVkZS9jb25maWdzL211bmljZXMuaAppbmRleCA5NzMzMGQ1Li40MjVhMWQ4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbXVuaWNlcy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9tdW5pY2VzLmgKQEAgLTExNyw5ICsxMTcsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCTB4MDAwMDAwMDAKIC8qIFVzZSBTUkFNIHVudGlsIFJBTSB3aWxsIGJlIGF2YWlsYWJsZSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJTVBDNVhYWF9TUkFNCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9TSVpFCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJTVBDNVhYWF9TUkFNX1NJWkUJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UgICAgQ09ORklHX1NZU19URVhUX0JBU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tdi1jb21tb24uaCBiL2luY2x1ZGUvY29uZmlncy9tdi1jb21tb24uaAppbmRleCBiZGNlYmQzLi5iYzgxZjJkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbXYtY29tbW9uLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL212LWNvbW1vbi5oCkBAIC0xMzEsNyArMTMxLDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JKDEwMjQgKiAxMDI0KSAvKiAxTWlCIGZvciBtYWxsb2MoKSAqLwogLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKIAogLyoKICAqIE90aGVyIHJlcXVpcmVkIG1pbmltYWwgY29uZmlndXJhdGlvbnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9teDFhZHMuaCBiL2luY2x1ZGUvY29uZmlncy9teDFhZHMuaAppbmRleCBiMmZmZDNlLi4yMWI3ZWM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbXgxYWRzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL214MWFkcy5oCkBAIC02MSw3ICs2MSw2IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQogCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqICBDUzg5MDAgRXRoZXJuZXQgZHJpdmVycwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL214MWZzMi5oIGIvaW5jbHVkZS9jb25maWdzL214MWZzMi5oCmluZGV4IDkwYThkODQuLjA2NDFiZWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9teDFmczIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbXgxZnMyLmgKQEAgLTk5LDcgKzk5LDYgQEAKICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCSAgKENPTkZJR19FTlZfU0laRSArICgxMjg8PDEwKSApCiAKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJKDEyMDw8MTApICAgICAgLyogc3RhY2sgc2l6ZSAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbXgzMWFkcy5oIGIvaW5jbHVkZS9jb25maWdzL214MzFhZHMuaAppbmRleCA1Nzk1NWRmLi5kMjc5OGU5NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL214MzFhZHMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbXgzMWFkcy5oCkBAIC01MSw3ICs1MSw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjggKiAxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAvKgogICogSGFyZHdhcmUgZHJpdmVycwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL214MzFwZGsuaCBiL2luY2x1ZGUvY29uZmlncy9teDMxcGRrLmgKaW5kZXggNGI0ZmIxYS4uNDdlN2M4NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL214MzFwZGsuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbXgzMXBkay5oCkBAIC01NSw3ICs1NSw2IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMipDT05GSUdfRU5WX1NJWkUgKyAyICogMTI4ICogMTAyNCkKIC8qIEJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAogCiAvKgogICogSGFyZHdhcmUgZHJpdmVycwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL214NTFldmsuaCBiL2luY2x1ZGUvY29uZmlncy9teDUxZXZrLmgKaW5kZXggNjE2NTQ3MzIuLmYzMWZjNGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9teDUxZXZrLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL214NTFldmsuaApAQCAtNTIsNyArNTIsNiBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArIDIgKiAxMDI0ICogMTAyNCkKIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CiAKICNkZWZpbmUgQk9BUkRfTEFURV9JTklUCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9uZW8uaCBiL2luY2x1ZGUvY29uZmlncy9uZW8uaAppbmRleCAxMDYzZDEyLi44ZGU1YWFmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbmVvLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL25lby5oCkBAIC0yMDgsMTAgKzIwOCw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUgkweEY4MDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfU0laRQkweDEwMDAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0RBVEFfQUREUiAvKiBpbnNpZGUgb2YgU0RSQU0JCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL25ldHN0YXIuaCBiL2luY2x1ZGUvY29uZmlncy9uZXRzdGFyLmgKaW5kZXggYzYzYzg0Ni4uZWU1YTk5NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL25ldHN0YXIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvbmV0c3Rhci5oCkBAIC03Miw3ICs3Miw2IEBACiAvKgogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCSg0ICogMTAyNCAqIDEwMjQpCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbmhrODgxNS5oIGIvaW5jbHVkZS9jb25maWdzL25oazg4MTUuaAppbmRleCAyYjY0MGRjLi40OWExNmFiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbmhrODgxNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9uaGs4ODE1LmgKQEAgLTkwLDcgKzkwLDYgQEAKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCTB4MDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJMHgwRkZGRkZGRgogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAyNTYgKiAxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIGZvciBpbml0aWFsIGRhdGEgKi8KIAogI2RlZmluZSBCT0FSRF9MQVRFX0lOSVQJCS8qIGNhbGwgYm9hcmRfbGF0ZV9pbml0IGR1cmluZyBzdGFydCB1cCAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbmlvczItZ2VuZXJpYy5oIGIvaW5jbHVkZS9jb25maWdzL25pb3MyLWdlbmVyaWMuaAppbmRleCBlNGJmNTdiLi41M2YyMDg0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbmlvczItZ2VuZXJpYy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9uaW9zMi1nZW5lcmljLmgKQEAgLTEyMywxMiArMTIzLDExIEBACiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCShDT05GSUdfU1lTX1NEUkFNX0JBU0UgKyBcCiAJCQkJCSBDT05GSUdfU1lTX1NEUkFNX1NJWkUgLSBcCiAJCQkJCSBDT05GSUdfU1lTX01PTklUT1JfTEVOKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMjU2CS8qIEdsb2JhbCBkYXRhIHNpemUgcnN2ZCAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAweDIwMDAwKQogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19CQVNFCQkoQ09ORklHX1NZU19NT05JVE9SX0JBU0UgLSBcCiAJCQkJCSBDT05GSUdfU1lTX01BTExPQ19MRU4pCiAjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX01BTExPQ19CQVNFIC0gXAotCQkJCQkgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorCQkJCQkgR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUAkJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9uczk3NTBkZXYuaCBiL2luY2x1ZGUvY29uZmlncy9uczk3NTBkZXYuaAppbmRleCA3OWRjZDY0Li5lNmI3NzRmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbnM5NzUwZGV2LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL25zOTc1MGRldi5oCkBAIC01MCw3ICs1MCw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgIDEyOCAgICAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbAogCQkJCQkgKiBkYXRhICovCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbzJkbnQuaCBiL2luY2x1ZGUvY29uZmlncy9vMmRudC5oCmluZGV4IGM5YzY5YmIuLjlmNWEwYjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9vMmRudC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9vMmRudC5oCkBAIC0yMTQsMTEgKzIxNCwxMCBAQAogCiAvKiBVc2UgU1JBTSB1bnRpbCBSQU0gd2lsbCBiZSBhdmFpbGFibGUgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCU1QQzVYWFhfU1JBTQotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlNUEM1WFhYX1NSQU1fU0laRQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlNUEM1WFhYX1NSQU1fU0laRQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLwogCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlDT05GSUdfU1lTX1RFWFRfQkFTRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL29jb3RlYS5oIGIvaW5jbHVkZS9jb25maWdzL29jb3RlYS5oCmluZGV4IGYzM2YwZmYuLmQwZmU5ZGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9vY290ZWEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvb2NvdGVhLmgKQEAgLTcyLDEwICs3Miw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfVEVNUF9TVEFDS19PQ00gIDEKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSICAgQ09ORklHX1NZU19JU1JBTV9CQVNFCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAgIENPTkZJR19TWVNfSVNSQU1fQkFTRSAgLyogSW5pdGlhbCBSQU0gYWRkcmVzcwkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgICAweDIwMDAJICAgIC8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgIDEyOAkJICAgIC8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEJKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICAgIDB4MjAwMAkgICAgLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNCSovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJKENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIC0gMHg0KQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDE1MTBpbm4uaCBiL2luY2x1ZGUvY29uZmlncy9vbWFwMTUxMGlubi5oCmluZGV4IGIwZWJhZmQuLjlmZjRmODQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9vbWFwMTUxMGlubi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9vbWFwMTUxMGlubi5oCkBAIC01MCw3ICs1MCw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9vbWFwMTYxMGgyLmggYi9pbmNsdWRlL2NvbmZpZ3Mvb21hcDE2MTBoMi5oCmluZGV4IDBiYmI1YjMuLjI5MzZkY2MgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9vbWFwMTYxMGgyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL29tYXAxNjEwaDIuaApAQCAtNTIsNyArNTIsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9vbWFwMTYxMGlubi5oIGIvaW5jbHVkZS9jb25maWdzL29tYXAxNjEwaW5uLmgKaW5kZXggODMyZGQ0Mi4uMGI0MWM0NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL29tYXAxNjEwaW5uLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL29tYXAxNjEwaW5uLmgKQEAgLTUxLDcgKzUxLDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDI0MjBoNC5oIGIvaW5jbHVkZS9jb25maWdzL29tYXAyNDIwaDQuaAppbmRleCA0NzQzN2IwLi43MTYxYWIxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDI0MjBoNC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9vbWFwMjQyMGg0LmgKQEAgLTcyLDcgKzcyLDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfRU5WX1NJWkUgICAgICAgICAgICAgU1pfMTI4SyAgICAgLyogVG90YWwgU2l6ZSBvZiBFbnZpcm9ubWVudCBTZWN0b3IgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOICAgICAgICAgICAoQ09ORklHX0VOVl9TSVpFICsgU1pfMTI4SykKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICAgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAvKgogICogSGFyZHdhcmUgZHJpdmVycwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL29tYXAzX2JlYWdsZS5oIGIvaW5jbHVkZS9jb25maWdzL29tYXAzX2JlYWdsZS5oCmluZGV4IDkwMGRiZDMuLjFjOWEwMDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9vbWFwM19iZWFnbGUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvb21hcDNfYmVhZ2xlLmgKQEAgLTc1LDcgKzc1LDYgQEAKICNkZWZpbmUgQ09ORklHX0VOVl9TSVpFCQkJKDEyOCA8PCAxMCkJLyogMTI4IEtpQiAqLwogCQkJCQkJLyogU2VjdG9yICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArICgxMjggPDwgMTApKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIGJ5dGVzIHJlc2VydmVkIGZvciAqLwogCQkJCQkJLyogaW5pdGlhbCBkYXRhICovCiAKIC8qCkBAIC0zNDgsNiArMzQ3LDYgQEAKIAogLyogYWRkaXRpb25zIGZvciBuZXcgcmVsb2NhdGlvbiBjb2RlLCBtdXN0IGJlIGFkZGVkIHRvIGFsbCBib2FyZHMgKi8KICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQlQSFlTX1NEUkFNXzEKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShMT1dfTEVWRUxfU1JBTV9TVEFDSyAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShMT1dfTEVWRUxfU1JBTV9TVEFDSyAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAjZW5kaWYgLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL29tYXAzX2V2bS5oIGIvaW5jbHVkZS9jb25maWdzL29tYXAzX2V2bS5oCmluZGV4IGM0YWEyMjAuLmU5MjVmM2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9vbWFwM19ldm0uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvb21hcDNfZXZtLmgKQEAgLTcxLDcgKzcxLDYgQEAKICNkZWZpbmUgQ09ORklHX0VOVl9TSVpFCQkJKDEyOCA8PCAxMCkJLyogMTI4IEtpQiAqLwogCQkJCQkJLyogU2VjdG9yICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArICgxMjggPDwgMTApKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIGJ5dGVzIHJlc2VydmVkIGZvciAqLwogCQkJCQkJLyogaW5pdGlhbCBkYXRhICovCiAvKgogICogSGFyZHdhcmUgZHJpdmVycwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL29tYXAzX292ZXJvLmggYi9pbmNsdWRlL2NvbmZpZ3Mvb21hcDNfb3Zlcm8uaAppbmRleCA2OWY5MTI2Li4wMjkyMDc4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDNfb3Zlcm8uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvb21hcDNfb3Zlcm8uaApAQCAtNTgsNyArNTgsNiBAQAogI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCQkoMTI4IDw8IDEwKQkvKiAxMjggS2lCICovCiAJCQkJCQkvKiBTZWN0b3IgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgKDEyOCA8PCAxMCkpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogYnl0ZXMgcmVzZXJ2ZWQgZm9yICovCiAJCQkJCQkvKiBpbml0aWFsIGRhdGEgKi8KIAogLyoKQEAgLTMyNSw2ICszMjQsNiBAQAogI2VuZGlmIC8qIChDT05GSUdfQ01EX05FVCkgKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCVBIWVNfU0RSQU1fMQotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKExPV19MRVZFTF9TUkFNX1NUQUNLIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKExPV19MRVZFTF9TUkFNX1NUQUNLIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKICNlbmRpZgkJCQkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDNfcGFuZG9yYS5oIGIvaW5jbHVkZS9jb25maWdzL29tYXAzX3BhbmRvcmEuaAppbmRleCAzMzA4YWNlLi5iNzhhYWNmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDNfcGFuZG9yYS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9vbWFwM19wYW5kb3JhLmgKQEAgLTYxLDcgKzYxLDYgQEAKICNkZWZpbmUgQ09ORklHX0VOVl9TSVpFCQkJKDEyOCA8PCAxMCkJLyogMTI4IEtpQiAqLwogCQkJCQkJLyogU2VjdG9yICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArICgxMjggPDwgMTApKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIGJ5dGVzIHJlc2VydmVkIGZvciAqLwogCQkJCQkJLyogaW5pdGlhbCBkYXRhICovCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDNfc2RwMzQzMC5oIGIvaW5jbHVkZS9jb25maWdzL29tYXAzX3NkcDM0MzAuaAppbmRleCA1NDM5YWEzLi5mYWIyNjNkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDNfc2RwMzQzMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9vbWFwM19zZHAzNDMwLmgKQEAgLTc4LDcgKzc4LDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCQkoMjU2IDw8IDEwKQogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAoMjU2IDw8IDEwKSkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBieXRlcyByZXNlcnZlZCBmb3IgKi8KIAkJCQkJCS8qIGluaXRpYWwgZGF0YSAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9vbWFwM196b29tMS5oIGIvaW5jbHVkZS9jb25maWdzL29tYXAzX3pvb20xLmgKaW5kZXggZjYxMmUwZi4uMTBiMjQ4YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL29tYXAzX3pvb20xLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL29tYXAzX3pvb20xLmgKQEAgLTY3LDcgKzY3LDYgQEAKICNkZWZpbmUgQ09ORklHX0VOVl9TSVpFCQkJKDEyOCA8PCAxMCkJLyogMTI4IEtpQiAqLwogCQkJCQkJLyogU2VjdG9yICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArICgxMjggPDwgMTApKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIGJ5dGVzIHJlc2VydmVkIGZvciAqLwogCQkJCQkJLyogaW5pdGlhbCBkYXRhICovCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDNfem9vbTIuaCBiL2luY2x1ZGUvY29uZmlncy9vbWFwM196b29tMi5oCmluZGV4IGFhZjkyOWUuLmI3YzMwMWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9vbWFwM196b29tMi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9vbWFwM196b29tMi5oCkBAIC02OCw3ICs2OCw2IEBACiAjZGVmaW5lIENPTkZJR19FTlZfU0laRQkJCSgxMjggPDwgMTApCS8qIDEyOCBLaUIgKi8KIAkJCQkJCS8qIFNlY3RvciAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAoMTI4IDw8IDEwKSkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBieXRlcyByZXNlcnZlZCBmb3IgKi8KIAkJCQkJCS8qIGluaXRpYWwgZGF0YSAqLwogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9vbWFwNF9wYW5kYS5oIGIvaW5jbHVkZS9jb25maWdzL29tYXA0X3BhbmRhLmgKaW5kZXggYjUyY2ExOS4uNzRkZWZhYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL29tYXA0X3BhbmRhLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL29tYXA0X3BhbmRhLmgKQEAgLTY3LDcgKzY3LDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCQkoMjU2IDw8IDEwKQogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAoMjU2IDw8IDEwKSkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBieXRlcyByZXNlcnZlZCBmb3IgKi8KIAkJCQkJCS8qIGluaXRpYWwgZGF0YSAqLwogLyogVmVjdG9yIEJhc2UgKi8KICNkZWZpbmUgQ09ORklHX1NZU19DQTlfVkVDVE9SX0JBU0UJU1JBTV9ST01fVkVDVF9CQVNFCkBAIC0yMjgsNiArMjI3LDYgQEAKICNkZWZpbmUgQ09ORklHX05SX0RSQU1fQkFOS1MJMQogCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJMHg4MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKExPV19MRVZFTF9TUkFNX1NUQUNLIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKExPV19MRVZFTF9TUkFNX1NUQUNLIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKICNlbmRpZiAvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDRfc2RwNDQzMC5oIGIvaW5jbHVkZS9jb25maWdzL29tYXA0X3NkcDQ0MzAuaAppbmRleCAxNzRkNzNmLi4yNmMzODBkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDRfc2RwNDQzMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9vbWFwNF9zZHA0NDMwLmgKQEAgLTY4LDcgKzY4LDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCQkoMTI4IDw8IDEwKQogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAoMjU2IDw8IDEwKSkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBieXRlcyByZXNlcnZlZCBmb3IgKi8KIAkJCQkJCS8qIGluaXRpYWwgZGF0YSAqLwogLyogVmVjdG9yIEJhc2UgKi8KICNkZWZpbmUgQ09ORklHX1NZU19DQTlfVkVDVE9SX0JBU0UJU1JBTV9ST01fVkVDVF9CQVNFCkBAIC0yMzMsNiArMjMyLDYgQEAKICNkZWZpbmUgQ09ORklHX05SX0RSQU1fQkFOS1MJMQogCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJMHg4MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKExPV19MRVZFTF9TUkFNX1NUQUNLIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKExPV19MRVZFTF9TUkFNX1NUQUNLIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKICNlbmRpZiAvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDU5MTJvc2suaCBiL2luY2x1ZGUvY29uZmlncy9vbWFwNTkxMm9zay5oCmluZGV4IGJjNjYwZTMuLmI4NzU0NjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9vbWFwNTkxMm9zay5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9vbWFwNTkxMm9zay5oCkBAIC01NCw3ICs1NCw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAvKgogICogSGFyZHdhcmUgZHJpdmVycwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL29tYXA3MzBwMi5oIGIvaW5jbHVkZS9jb25maWdzL29tYXA3MzBwMi5oCmluZGV4IGE2YThhMDIuLmZhMzY4MWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9vbWFwNzMwcDIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvb21hcDczMHAyLmgKQEAgLTU5LDcgKzU5LDYgQEAKICAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJICAgKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJICAgMTI4CSAgICAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvb3RjNTcwLmggYi9pbmNsdWRlL2NvbmZpZ3Mvb3RjNTcwLmgKaW5kZXggNGExY2VkZS4uYWYwMjAyYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL290YzU3MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9vdGM1NzAuaApAQCAtMjM1LDcgKzIzNSw2IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQlST1VORCgzICogQ09ORklHX0VOVl9TSVpFICsgXAogCQkJCQkxMjgqMTAyNCwgMHgxMDAwKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIDEyOCBieXRlcyBmb3IgaW5pdGlhbCBkYXRhICovCiAKICNkZWZpbmUgQ09ORklHX1NUQUNLU0laRQkJKDMyICogMTAyNCkJLyogcmVndWxhciBzdGFjayAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvcDNteC5oIGIvaW5jbHVkZS9jb25maWdzL3AzbXguaAppbmRleCA4YjVlZjhmLi43MWViNzg0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvcDNteC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9wM214LmgKQEAgLTk4LDkgKzk4LDggQEAKICovCiAjdW5kZWYJQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQyMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MTAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0IGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvcDNwNDQwLmggYi9pbmNsdWRlL2NvbmZpZ3MvcDNwNDQwLmgKaW5kZXggNzE1MjlhMi4uNzE5YTEyYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3AzcDQ0MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9wM3A0NDAuaApAQCAtNjEsMTAgKzYxLDkgQEAKICAqIEluaXRpYWwgUkFNICYgc3RhY2sgcG9pbnRlciAocGxhY2VkIGluIGludGVybmFsIFNSQU0pCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JU1JBTV9CQVNFICAvKiBJbml0aWFsIFJBTSBhZGRyZXNzCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MjAwMAkgICAgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkgICAgLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YQkqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyMDAwCSAgICAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KQkvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9wYWxtbGQuaCBiL2luY2x1ZGUvY29uZmlncy9wYWxtbGQuaAppbmRleCA5MjY3MjhiLi42NWYxMzA2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvcGFsbWxkLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3BhbG1sZC5oCkBAIC0zMyw3ICszMyw3IEBACiAgKi8KICNkZWZpbmUJQ09ORklHX0VOVl9PVkVSV1JJVEUKICNkZWZpbmUJQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMTI4KjEwMjQpCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKKyNkZWZpbmUJQ09ORklHX1NZU19URVhUX0JBU0UJMHgwCiAKICNkZWZpbmUJQ09ORklHX0JPT1RDT01NQU5ECQkJCQkJXAogCSJpZiBtbWNpbmZvICYmIGZhdGxvYWQgbW1jIDAgMHhhMDAwMDAwMCB1Ym9vdC5zY3JpcHQgOyB0aGVuICIJXApAQCAtMTU1LDcgKzE1NSw3IEBACiAjZGVmaW5lCUNPTkZJR19TWVNfTE9BRF9BRERSCQlDT05GSUdfU1lTX0RSQU1fQkFTRQogCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJUEhZU19TRFJBTV8xCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICsgUEhZU19TRFJBTV8xKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFICsgUEhZU19TRFJBTV8xKQogCiAvKgogICogTk9SIEZMQVNICmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvcGFsbXRjLmggYi9pbmNsdWRlL2NvbmZpZ3MvcGFsbXRjLmgKaW5kZXggZmU4NzY0OC4uM2Y2YzJmMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3BhbG10Yy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9wYWxtdGMuaApAQCAtMzUsNyArMzUsNyBAQAogICovCiAjZGVmaW5lCUNPTkZJR19FTlZfT1ZFUldSSVRFCiAjZGVmaW5lCUNPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDEyOCoxMDI0KQotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CisjZGVmaW5lCUNPTkZJR19TWVNfVEVYVF9CQVNFCTB4MAogCiAjZGVmaW5lCUNPTkZJR19CT09UQ09NTUFORAkJCQkJCVwKIAkiaWYgbW1jIGluaXQgJiYgZmF0bG9hZCBtbWMgMCAweGEwMDAwMDAwIHVib290LnNjcmlwdCA7IHRoZW4gIglcCkBAIC0xNTYsNyArMTU2LDcgQEAKICNkZWZpbmUJQ09ORklHX1NZU19MT0FEX0FERFIJCUNPTkZJR19TWVNfRFJBTV9CQVNFCiAKICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQlQSFlTX1NEUkFNXzEKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgKyBQSFlTX1NEUkFNXzEpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUgKyBQSFlTX1NEUkFNXzEpCiAKIC8qCiAgKiBOT1IgRkxBU0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9wY20wMzAuaCBiL2luY2x1ZGUvY29uZmlncy9wY20wMzAuaAppbmRleCA1ODk4YjRlLi42NzZmNDBjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvcGNtMDMwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3BjbTAzMC5oCkBAIC0yMjMsMTIgKzIyMywxMSBAQAogI2RlZmluZSBDT05GSUdfU1lTX0RFRkFVTFRfTUJBUgkJMHg4MDAwMDAwMAogLyogVXNlIFNSQU0gdW50aWwgUkFNIHdpbGwgYmUgYXZhaWxhYmxlICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglNUEM1WFhYX1NSQU0KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCU1QQzVYWFhfU1JBTV9TSVpFCS8qIEVuZCBvZiB1c2VkICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlNUEM1WFhYX1NSQU1fU0laRQkvKiBTaXplIG9mIHVzZWQgKi8KIAkJCQkJCQkJLyogYXJlYSBpbiBEUFJBTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgKi8KIAkJCQkJCS8qIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gXAotCQkJCQkJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gXAorCQkJCQkJR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlDT05GSUdfU1lTX1RFWFRfQkFTRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3BjczQ0MGVwLmggYi9pbmNsdWRlL2NvbmZpZ3MvcGNzNDQwZXAuaAppbmRleCBhZmRkNjljLi5kZWI1YjMzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvcGNzNDQwZXAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvcGNzNDQwZXAuaApAQCAtNzQsOSArNzQsOCBAQAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9EQ0FDSEUJMQkJLyogZC1jYWNoZSBhcyBpbml0IHJhbQkqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHg3MDAwMDAwMAkJLyogRENhY2hlICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECSg0IDw8IDEwKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMjU2CQkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCSg0IDw8IDEwKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3BkbmIzLmggYi9pbmNsdWRlL2NvbmZpZ3MvcGRuYjMuaAppbmRleCAyMjBmNjg2Li4zM2ZhNmVlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvcGRuYjMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvcGRuYjMuaApAQCAtNjQsNyArNjQsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMSA8PCAyMCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyogYWxsb3cgdG8gb3ZlcndyaXRlIHNlcmlhbCBhbmQgZXRoYWRkciAqLwogI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3BmNTIwMC5oIGIvaW5jbHVkZS9jb25maWdzL3BmNTIwMC5oCmluZGV4IDI4ZGZlM2IuLjU4MzAzNDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9wZjUyMDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvcGY1MjAwLmgKQEAgLTIyMSwxMCArMjIxLDkgQEAKIAogLyogVXNlIFNSQU0gdW50aWwgUkFNIHdpbGwgYmUgYXZhaWxhYmxlICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglNUEM1WFhYX1NSQU0KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1NJWkUJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJTVBDNVhYWF9TUkFNX1NJWkUJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFICAgIENPTkZJR19TWVNfVEVYVF9CQVNFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvcGxlYjIuaCBiL2luY2x1ZGUvY29uZmlncy9wbGViMi5oCmluZGV4IDNiNmU2MGEuLjY0NjU0ZjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9wbGViMi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9wbGViMi5oCkBAIC0zOSw2ICszOSw3IEBACiAjdW5kZWYgQ09ORklHX0xDRAogI3VuZGVmIENPTkZJR19NTUMKICNkZWZpbmUgQk9BUkRfTEFURV9JTklUCQkxCisjZGVmaW5lCUNPTkZJR19TWVNfVEVYVF9CQVNFCTB4MAogCiAjdW5kZWYgQ09ORklHX1VTRV9JUlEJCQkvKiB3ZSBkb24ndCBuZWVkIElSUS9GSVEgc3R1ZmYgKi8KIApAQCAtNDksNyArNTAsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCSAgICAoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCkBAIC0xNTUsMTUgKzE1NSw5IEBACiAvKgogICogUGh5c2ljYWwgTWVtb3J5IE1hcAogICovCi0jZGVmaW5lIENPTkZJR19OUl9EUkFNX0JBTktTCTQJICAgLyogd2UgaGF2ZSAyIGJhbmtzIG9mIERSQU0gKi8KKyNkZWZpbmUgQ09ORklHX05SX0RSQU1fQkFOS1MJMQkgICAvKiB3ZSBoYXZlIDEgYmFuayBvZiBEUkFNICovCiAjZGVmaW5lIFBIWVNfU0RSQU1fMQkJMHhhMDAwMDAwMCAvKiBTRFJBTSBCYW5rICMxICovCiAjZGVmaW5lIFBIWVNfU0RSQU1fMV9TSVpFCTB4MDIwMDAwMDAgLyogMzIgTUIgKi8KLSNkZWZpbmUgUEhZU19TRFJBTV8yCQkweGE0MDAwMDAwIC8qIFNEUkFNIEJhbmsgIzIgKi8KLSNkZWZpbmUgUEhZU19TRFJBTV8yX1NJWkUJMHgwMDAwMDAwMCAvKiAwIE1CICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fMwkJMHhhODAwMDAwMCAvKiBTRFJBTSBCYW5rICMzICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fM19TSVpFCTB4MDAwMDAwMDAgLyogMCBNQiAqLwotI2RlZmluZSBQSFlTX1NEUkFNXzQJCTB4YWMwMDAwMDAgLyogU0RSQU0gQmFuayAjNCAqLwotI2RlZmluZSBQSFlTX1NEUkFNXzRfU0laRQkweDAwMDAwMDAwIC8qIDAgTUIgKi8KIAogI2RlZmluZSBQSFlTX0ZMQVNIXzEJCTB4MDAwMDAwMDAgLyogRmxhc2ggQmFuayAjMSAqLwogI2RlZmluZSBQSFlTX0ZMQVNIXzIJCTB4MDQwMDAwMDAgLyogRmxhc2ggQmFuayAjMiAqLwpAQCAtMTgwLDcgKzE3NCw3IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCUNPTkZJR19TWVNfRkxBU0hfQkFTRQogCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJUEhZU19TRFJBTV8xCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICsgUEhZU19TRFJBTV8xKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFICsgUEhZU19TRFJBTV8xKQogCiAvKgogICogR1BJTyBzZXR0aW5ncwpAQCAtMjEzLDkgKzIwNyw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfR0FGUjJfVV9WQUwJCTB4MDAwMDAwMDAKIAogI2RlZmluZSBDT05GSUdfU1lTX1BTU1JfVkFMCQkweDIwCi0jZGVmaW5lIENPTkZJR19TWVNfQ0NDUl9WQUwJICAgIDB4MDAwMDAxNDEJLyogMTAwIE1IeiBtZW1vcnksIDIwMCBNSHogQ1BVCSovCi0jZGVmaW5lIENPTkZJR19TWVNfQ0tFTl9WQUwJICAgIDB4MDAwMDAwNjAJLyogRkZVQVJUIGFuZCBTVFVBUlQgZW5hYmxlZAkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lDTVJfVkFMCSAgICAweDAwMDAwMDAwCS8qIE5vIGludGVycnVwdHMgZW5hYmxlZAkqLworI2RlZmluZSBDT05GSUdfU1lTX0NDQ1IJCSAgICAweDAwMDAwMTQxCS8qIDEwMCBNSHogbWVtb3J5LCAyMDAgTUh6IENQVQkqLworI2RlZmluZSBDT05GSUdfU1lTX0NLRU4JCSAgICAweDAwMDAwMDYwCS8qIEZGVUFSVCBhbmQgU1RVQVJUIGVuYWJsZWQJKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JQ01SCQkgICAgMHgwMDAwMDAwMAkvKiBObyBpbnRlcnJ1cHRzIGVuYWJsZWQJKi8KIAogLyoKICAqIE1lbW9yeSBzZXR0aW5ncwpAQCAtMjMxLDYgKzIyNSw5IEBACiAJCQkJCSAgIC8qIGJpdHMgc2V0IGluIGxvd2xldmVsX2luaXQuUwkqLwogI2RlZmluZSBDT05GSUdfU1lTX01ETVJTX1ZBTAkJMHgwMDAwMDAwMAogCisjZGVmaW5lCUNPTkZJR19TWVNfRkxZQ05GR19WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUJQ09ORklHX1NZU19TWENORkdfVkFMCQkweDAwMDAwMDAwCisKIC8qCiAgKiBQQ01DSUEgYW5kIENGIEludGVyZmFjZXMKICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3BtOTI2MS5oIGIvaW5jbHVkZS9jb25maWdzL3BtOTI2MS5oCmluZGV4IGEwYjAwZTkuLmFlZTg0MmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9wbTkyNjEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvcG05MjYxLmgKQEAgLTM3MCw3ICszNzAsNiBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJXAogCQlST1VORCgzICogQ09ORklHX0VOVl9TSVpFICsgMTI4ICogMTAyNCwgMHgxMDAwKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CiAKICNkZWZpbmUgQ09ORklHX1NUQUNLU0laRQkJKDMyICogMTAyNCkJLyogcmVndWxhciBzdGFjayAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvcG05MjYzLmggYi9pbmNsdWRlL2NvbmZpZ3MvcG05MjYzLmgKaW5kZXggOTczNWU2YS4uNDJlYzg1NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3BtOTI2My5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9wbTkyNjMuaApAQCAtNDAxLDcgKzQwMSw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JUk9VTkQoMyAqIENPTkZJR19FTlZfU0laRSArIDEyOCAqIDEwMjQsIDB4MTAwMCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiAxMjggYnl0ZXMgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJCSgzMiAqIDEwMjQpCS8qIHJlZ3VsYXIgc3RhY2sgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3BtOWc0NS5oIGIvaW5jbHVkZS9jb25maWdzL3BtOWc0NS5oCmluZGV4IDY5MGYxMTkuLjJmYmU1YzYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9wbTlnNDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvcG05ZzQ1LmgKQEAgLTE3NSw3ICsxNzUsNiBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJUk9VTkQoMyAqIENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0LFwKIAkJCQkJMHgxMDAwKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4IC8qIDEyOCBieXRlcyBmb3IgaW5pdGlhbCBkYXRhICovCiAKICNkZWZpbmUgQ09ORklHX1NUQUNLU0laRQkJKDMyKjEwMjQpCS8qIHJlZ3VsYXIgc3RhY2sgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3BwbWM3eHguaCBiL2luY2x1ZGUvY29uZmlncy9wcG1jN3h4LmgKaW5kZXggZTc1ODRjMy4uNjUyYjg1ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3BwbWM3eHguaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvcHBtYzd4eC5oCkBAIC0yOTcsMTUgKzI5NywxNCBAQAogICogY29waWVkIHRvIHRvcCBvZiBSQU0gYnkgdGhlIGluaXQgY29kZS4KICAqCiAgKiBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJCS0gQWRkcmVzcyBvZiBJbml0IFJBTSwgYWJvdmUgZXhjZXB0aW9uIHZlY3QKLSAqIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECQktIFNpemUgb2YgSW5pdCBSQU0KLSAqIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkJLSBBbW1vdW50IG9mIFJBTSB0byByZXNlcnZlIGZvciBnbG9iYWwgZGF0YQorICogQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCQktIFNpemUgb2YgSW5pdCBSQU0KKyAqIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFCQktIEFtbW91bnQgb2YgUkFNIHRvIHJlc2VydmUgZm9yIGdsb2JhbCBkYXRhCiAgKiBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkJLSBTdGFydCBvZiBnbG9iYWwgZGF0YSwgdG9wIG9mIHN0YWNrCiAgKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJKENPTkZJR19TWVNfU0RSQU1fQkFTRSArIDB4NDAwMCkKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3BwbWM4MjYwLmggYi9pbmNsdWRlL2NvbmZpZ3MvcHBtYzgyNjAuaAppbmRleCA3MDE4YThjLi42OGM2Mjc3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvcHBtYzgyNjAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvcHBtYzgyNjAuaApAQCAtNDIyLDkgKzQyMiw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3B4YTI1NV9pZHAuaCBiL2luY2x1ZGUvY29uZmlncy9weGEyNTVfaWRwLmgKaW5kZXggNDU4MTY3NC4uMWZmMzVlMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3B4YTI1NV9pZHAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvcHhhMjU1X2lkcC5oCkBAIC00Myw2ICs0Myw3IEBACiAgKi8KICN1bmRlZiBDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUCQkJLyogZGVmaW5lIGZvciBkZXZlbG9waW5nICovCiAjdW5kZWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QJCQkvKiBkZWZpbmUgZm9yIGRldmVsb3BpbmcgKi8KKyNkZWZpbmUJQ09ORklHX1NZU19URVhUX0JBU0UJMHgwCiAKIC8qCiAgKiBkZWZpbmUgdGhlIGZvbGxvd2luZyB0byBlbmFibGUgZGVidWcgYmxpbmtzLiAgQSBkZWJ1ZyBibGluayBmdW5jdGlvbgpAQCAtNzUsNyArNzYsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCSAgICAoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBQWEEyNTAgSURQIG1lbW9yeSBtYXAgaW5mb3JtYXRpb24KQEAgLTI3MSw3ICsyNzEsNyBAQAogLyoKICAqIFBoeXNpY2FsIE1lbW9yeSBNYXAKICAqLwotI2RlZmluZSBDT05GSUdfTlJfRFJBTV9CQU5LUwk0CSAgIC8qIHdlIGhhdmUgMSBiYW5rcyBvZiBEUkFNICovCisjZGVmaW5lIENPTkZJR19OUl9EUkFNX0JBTktTCTEJICAgLyogd2UgaGF2ZSAxIGJhbmsgb2YgRFJBTSAqLwogI2RlZmluZSBQSFlTX1NEUkFNXzEJCTB4YTAwMDAwMDAgLyogU0RSQU0gQmFuayAjMSAqLwogI2RlZmluZSBQSFlTX1NEUkFNXzFfU0laRQkweDA0MDAwMDAwIC8qIDY0IE1CICovCiAjZGVmaW5lIFBIWVNfU0RSQU1fMgkJMHhhNDAwMDAwMCAvKiBTRFJBTSBCYW5rICMyICovCkBAIC0yOTMsNyArMjkzLDcgQEAKICNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFCQlQSFlTX0ZMQVNIXzEKIAogI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCVBIWVNfU0RSQU1fMQotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShHRU5FUkFURURfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKIAogLyoKICAqIEdQSU8gc2V0dGluZ3MKQEAgLTMxNyw2ICszMTcsOSBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfUFNTUl9WQUwJCTB4MjAKIAorI2RlZmluZQlDT05GSUdfU1lTX0NDQ1IJCQlDQ0NSX0wyN3xDQ0NSX00yfENDQ1JfTjEwCisjZGVmaW5lCUNPTkZJR19TWVNfQ0tFTgkJCTB4MAorCiAvKgogICogTWVtb3J5IHNldHRpbmdzCiAgKi8KQEAgLTMyNiw2ICszMjksOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX01EQ05GR19WQUwJCTB4MDkwMDA5QzkKICNkZWZpbmUgQ09ORklHX1NZU19NRFJFRlJfVkFMCQkweDAwODVDMDE3CiAjZGVmaW5lIENPTkZJR19TWVNfTURNUlNfVkFMCQkweDAwMjIwMDIyCisjZGVmaW5lCUNPTkZJR19TWVNfRkxZQ05GR19WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUJQ09ORklHX1NZU19TWENORkdfVkFMCQkweDAwMDAwMDAwCiAKIC8qCiAgKiBQQ01DSUEgYW5kIENGIEludGVyZmFjZXMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9xb25nLmggYi9pbmNsdWRlL2NvbmZpZ3MvcW9uZy5oCmluZGV4IDQyNmQ5MGQuLmUyZjdhNWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9xb25nLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3FvbmcuaApAQCAtNDMsNyArNDMsNiBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArIDEwMjQgKiAxMDI0KQogLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKQEAgLTMwMCw4ICsyOTksOCBAQAogLyogYWRkaXRpb25zIGZvciBuZXcgcmVsb2NhdGlvbiBjb2RlLCBtdXN0IGJlIGFkZGVkIHRvIGFsbCBib2FyZHMgKi8KICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQkweDgwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglJUkFNX0JBU0VfQUREUgotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJSVJBTV9TSVpFCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCQlJUkFNX1NJWkUKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUKQogCiAjZGVmaW5lIENPTkZJR19CT0FSRF9FQVJMWV9JTklUX0YJMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3F1YWQxMDBoZC5oIGIvaW5jbHVkZS9jb25maWdzL3F1YWQxMDBoZC5oCmluZGV4IGY4NDdmOWMuLjVmZDc4MzggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9xdWFkMTAwaGQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvcXVhZDEwMGhkLmgKQEAgLTI0NywxMCArMjQ3LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSCTB4RjgwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC8qIGluc2lkZSBvZiBPQ00JCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVCAgICAgIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9xdWFudHVtLmggYi9pbmNsdWRlL2NvbmZpZ3MvcXVhbnR1bS5oCmluZGV4IDI0NDBlZWUuLjBlYmIwOTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9xdWFudHVtLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3F1YW50dW0uaApAQCAtMTU4LDkgKzE1OCw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvcjJkcGx1cy5oIGIvaW5jbHVkZS9jb25maWdzL3IyZHBsdXMuaAppbmRleCBiYzUxOGRiLi5hZGU2ZjdjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvcjJkcGx1cy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9yMmRwbHVzLmgKQEAgLTU4LDcgKzU4LDYgQEAKIC8qIFNpemUgb2YgRFJBTSByZXNlcnZlZCBmb3IgbWFsbG9jKCkgdXNlICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDEwMjQgKiAxMDI0KQogLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkoMjU2KQogI2RlZmluZSBDT05GSUdfU1lTX0JPT1RNQVBTWgkJKDggKiAxMDI0ICogMTAyNCkKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9yNzc4MG1wLmggYi9pbmNsdWRlL2NvbmZpZ3Mvcjc3ODBtcC5oCmluZGV4IDQxMzc2ZGEuLjM0MTZjYjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9yNzc4MG1wLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3I3NzgwbXAuaApAQCAtMTAxLDcgKzEwMSw2IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDEyMDQgKiAxMDI0KQogCiAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCSgyNTYpCiAjZGVmaW5lIENPTkZJR19TWVNfQk9PVE1BUFNaCQkoOCAqIDEwMjQgKiAxMDI0KQogI2RlZmluZSBDT05GSUdfU1lTX1JYX0VUSF9CVUZGRVIJKDgpCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9yZWR3b29kLmggYi9pbmNsdWRlL2NvbmZpZ3MvcmVkd29vZC5oCmluZGV4IGE3ZDVkYWMuLmY3NWFiNjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9yZWR3b29kLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3JlZHdvb2QuaApAQCAtODksMTAgKzg5LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19URU1QX1NUQUNLX09DTQkxCiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUglDT05GSUdfU1lTX0lTUkFNX0JBU0UKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSVNSQU1fQkFTRQkvKiBJbml0aWFsIFJBTSBhZGRyZXNzCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MjAwMAkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyMDAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAkoQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgLSAweDQpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9ybXUuaCBiL2luY2x1ZGUvY29uZmlncy9ybXUuaAppbmRleCA1ZTZiYzI3Li4wNjQ3MTZmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvcm11LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3JtdS5oCkBAIC0xNTQsOSArMTU0LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9yc2Rwcm90by5oIGIvaW5jbHVkZS9jb25maWdzL3JzZHByb3RvLmgKaW5kZXggYjgyZmYzNy4uNTc2MWYyMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3JzZHByb3RvLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3JzZHByb3RvLmgKQEAgLTI1Myw5ICsyNTMsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDQwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9yc2s3MjAzLmggYi9pbmNsdWRlL2NvbmZpZ3MvcnNrNzIwMy5oCmluZGV4IDlhYTcxYjQuLmIzZmVhYTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9yc2s3MjAzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3JzazcyMDMuaApAQCAtNzgsNyArNzgsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlSU0s3MjAzX0ZMQVNIX0JBU0VfMQogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMTI4ICogMTAyNCkKICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMjU2ICogMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTI1NgogI2RlZmluZSBDT05GSUdfU1lTX0JPT1RNQVBTWgkJKDggKiAxMDI0ICogMTAyNCkKIAogLyogRkxBU0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zNXBfZ29uaS5oIGIvaW5jbHVkZS9jb25maWdzL3M1cF9nb25pLmgKaW5kZXggZGMwMWNlYi4uNDdiOGE1NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3M1cF9nb25pLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3M1cF9nb25pLmgKQEAgLTU4LDcgKzU4LDYgQEAKICAqIDFNQiA9IDB4MTAwMDAwLCAweDEwMDAwMCA9IDEwMjQgKiAxMDI0CiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgKDEgPDwgMjApKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgZm9yICovCiAJCQkJCQkvKiBpbml0aWFsIGRhdGEgKi8KIC8qCiAgKiBzZWxlY3Qgc2VyaWFsIGNvbnNvbGUgY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NhY3NuZy5oIGIvaW5jbHVkZS9jb25maWdzL3NhY3NuZy5oCmluZGV4IGQ3NDE3MTYuLjMyZTA0NDQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zYWNzbmcuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2Fjc25nLmgKQEAgLTY3Myw5ICs2NzMsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDQwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zYmMyNDEweC5oIGIvaW5jbHVkZS9jb25maWdzL3NiYzI0MTB4LmgKaW5kZXggMDI1YWQwOS4uZjBmMTliMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3NiYzI0MTB4LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3NiYzI0MTB4LmgKQEAgLTU5LDcgKzU5LDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAvKgogICogSGFyZHdhcmUgZHJpdmVycwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NiYzM1X2E5ZzIwLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc2JjMzVfYTlnMjAuaAppbmRleCBiOWYyN2NjLi5jZGJlNzEwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjMzVfYTlnMjAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2JjMzVfYTlnMjAuaApAQCAtMTg3LDcgKzE4Nyw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JUk9VTkQoMyAqIENPTkZJR19FTlZfU0laRSArIDEyOCAqIDEwMjQsIDB4MTAwMCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiAxMjggYnl0ZXMgZm9yIGluaXRpYWwgZGF0YSAqLwogI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFCQkoMzIgKiAxMDI0KQkvKiByZWd1bGFyIHN0YWNrICovCiAKICNpZmRlZiBDT05GSUdfVVNFX0lSUQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NiYzQwNS5oIGIvaW5jbHVkZS9jb25maWdzL3NiYzQwNS5oCmluZGV4IDNkZTJhOWUuLjZmMGQ3MjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zYmM0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2JjNDA1LmgKQEAgLTI2NCw5ICsyNjQsOCBAQAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJMHgxMDAwCiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0RBVEFfQUREUiAvKiBpbnNpZGUgb2YgU0RSQU0JCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJQ09ORklHX1NZU19PQ01fREFUQV9TSVpFIC8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NiYzgyNDAuaCBiL2luY2x1ZGUvY29uZmlncy9zYmM4MjQwLmgKaW5kZXggMDkzNGEwMC4uNTk5M2JlNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3NiYzgyNDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2JjODI0MC5oCkBAIC0yMDEsMTEgKzIwMSwxMCBAQAogCiAJLyogU2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhCiAJICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAxMjgKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgICAgIDB4NDAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgICAweDEwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFICAgICAgMHgxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAKIC8qCiAgKiBOUzE2NTUwIENvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zYmM4MjYwLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc2JjODI2MC5oCmluZGV4IDU0YTFhMzYuLjBkODMzMzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zYmM4MjYwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3NiYzgyNjAuaApAQCAtNTcyLDkgKzU3Miw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NiYzgzNDkuaCBiL2luY2x1ZGUvY29uZmlncy9zYmM4MzQ5LmgKaW5kZXggZWUyMjkyYy4uYjQxOGNmMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3NiYzgzNDkuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2JjODM0OS5oCkBAIC0xNjksMTAgKzE2OSw5IEBACiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4RkQwMDAwMDAJCS8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgxMDAwCQkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0qLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgxMDAwCQkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMHgxMDAJCQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpCQkvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjODU0OC5oIGIvaW5jbHVkZS9jb25maWdzL3NiYzg1NDguaAppbmRleCAwZGRkMjBkLi43YmY5ZmM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjODU0OC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zYmM4NTQ4LmgKQEAgLTMyMSwxMiArMzIxLDExIEBACiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4ZTQwMTAwMDAJLyogSW5pdGlhbCBSQU0gYWRkcmVzcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDQwMDAJCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDQwMDAJCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9MMl9BRERSCTB4ZjhmODAwMDAJLyogcmVsb2NhdGUgYm9vdCBMMlNSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjODU2MC5oIGIvaW5jbHVkZS9jb25maWdzL3NiYzg1NjAuaAppbmRleCBjZDk2NTJjLi4xMDFjNWQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjODU2MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zYmM4NTYwLmgKQEAgLTE5MSwxMCArMTkxLDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHg3MDAwMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSgyNTYgKiAxMDI0KQkvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc2JjODY0MWQuaCBiL2luY2x1ZGUvY29uZmlncy9zYmM4NjQxZC5oCmluZGV4IDllMmFlZjQuLjkwZDg0ZWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zYmM4NjQxZC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zYmM4NjQxZC5oCkBAIC0yNDksMTAgKzI0OSw5IEBACiAjZWxzZQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhmODQwMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCiAjZW5kaWYKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHg0MDAwCQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHg0MDAwCQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpICAgIC8qIFJlc2VydmUgMjU2IGtCIGZvciBNb24gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zYzMuaCBiL2luY2x1ZGUvY29uZmlncy9zYzMuaAppbmRleCAzZTZhYmYzLi4wNDUxMTA1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2MzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3NjMy5oCkBAIC00NjMsNyArNDYzLDcgQEAKIC8qIFdoZXJlIHRoZSBpbnRlcm5hbCBTUkFNIHN0YXJ0cyAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19PQ01fREFUQV9BRERSCiAvKiBXaGVyZSB0aGUgaW50ZXJuYWwgU1JBTSBlbmRzIChvbmx5IG9mZnNldCkgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgwRjAwCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDBGMDAKIAogLyoKIApAQCAtNDc2LDEzICs0NzYsMTIgQEAKIAkJCSAgIHwJICAgICAgfAogCQkJICAgfCA2NCBCeXRlcyB8CiAJCQkgICB8CSAgICAgIHwKLSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgLS0tLS0tPiAtLS0tLS0tLS0tLS0gaGlnaGVyIGFkZHJlc3MKKyBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgIC0tLS0tLT4gLS0tLS0tLS0tLS0tIGhpZ2hlciBhZGRyZXNzCiAgIChvZmZzZXQgb25seSkKIAogKi8KIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgIDY0Ci0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKIC8qIEluaXRpYWwgdmFsdWUgb2YgdGhlIHN0YWNrIHBvaW50ZXJuIGluIGludGVybmFsIFNSQU0gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVCAgICBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc2NiOTMyOC5oIGIvaW5jbHVkZS9jb25maWdzL3NjYjkzMjguaAppbmRleCA1NTU2NzE0Li5jMGFlMmQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2NiOTMyOC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zY2I5MzI4LmgKQEAgLTEwNyw3ICsxMDcsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAoMTI4PDwxMCkgKQogCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFCSgxMjA8PDEwKSAgICAgIC8qIHN0YWNrIHNpemUJCSAgICAgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NlcXVvaWEuaCBiL2luY2x1ZGUvY29uZmlncy9zZXF1b2lhLmgKaW5kZXggNDEyZGVlYS4uYTQwNmNhMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3NlcXVvaWEuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2VxdW9pYS5oCkBAIC05OCw5ICs5OCw4IEBACiAgKi8KIC8qIDQ0MEVQeC80NDBHUnggaGF2ZSAxNktCIG9mIGludGVybmFsIFNSQU0sIHNvIG5vIG5lZWQgZm9yIEQtQ2FjaGUJKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0JBU0UJLyogT0NNCQkJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJKDQgPDwgMTApCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkoNCA8PCAxMCkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCShDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAtIDB4NCkKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zaDc3NjNyZHAuaCBiL2luY2x1ZGUvY29uZmlncy9zaDc3NjNyZHAuaAppbmRleCBjOGM2MmFkLi4yMDljYjg4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2g3NzYzcmRwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3NoNzc2M3JkcC5oCkBAIC04NSw3ICs4NSw2IEBACiAvKiBTaXplIG9mIERSQU0gcmVzZXJ2ZWQgZm9yIG1hbGxvYygpIHVzZSAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCSgxMDI0ICogMTAyNCkKIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJKDI1NikKICNkZWZpbmUgQ09ORklHX1NZU19CT09UTUFQU1oJCSg4ICogMTAyNCAqIDEwMjQpCiAKICNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9DRkkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zaDc3ODVsY3IuaCBiL2luY2x1ZGUvY29uZmlncy9zaDc3ODVsY3IuaAppbmRleCAyYzE4ZTJmLi41OTFmYjVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc2g3Nzg1bGNyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3NoNzc4NWxjci5oCkBAIC02Miw4ICs2MiwxMCBAQAogCiAvKiBNRU1PUlkgKi8KICNpZiBkZWZpbmVkKENPTkZJR19TSF8zMkJJVCkKLSNkZWZpbmUgU0g3Nzg1TENSX1NEUkFNX1BIWVNfQkFTRQkoMHg0ODAwMDAwMCkKLSNkZWZpbmUgU0g3Nzg1TENSX1NEUkFNX0JBU0UJCSgweDg4MDAwMDAwKQorLyogMHg0MDAwMDAwMCAtIDB4NDdGRkZGRkYgZG9lcyBub3QgdXNlICovCisjZGVmaW5lIENPTkZJR19TSF9TRFJBTV9PRkZTRVQJCSgweDgwMDAwMDApCisjZGVmaW5lIFNINzc4NUxDUl9TRFJBTV9QSFlTX0JBU0UJKDB4NDAwMDAwMDAgKyBDT05GSUdfU0hfU0RSQU1fT0ZGU0VUKQorI2RlZmluZSBTSDc3ODVMQ1JfU0RSQU1fQkFTRQkJKDB4ODAwMDAwMDAgKyBDT05GSUdfU0hfU0RSQU1fT0ZGU0VUKQogI2RlZmluZSBTSDc3ODVMQ1JfU0RSQU1fU0laRQkJKDM4NCAqIDEwMjQgKiAxMDI0KQogI2RlZmluZSBTSDc3ODVMQ1JfRkxBU0hfQkFTRV8xCQkoMHhhMDAwMDAwMCkKICNkZWZpbmUgU0g3Nzg1TENSX0ZMQVNIX0JBTktfU0laRQkoNjQgKiAxMDI0ICogMTAyNCkKQEAgLTEwOCw3ICsxMTAsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQkoU0g3Nzg1TENSX0ZMQVNIX0JBU0VfMSkKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDUxMiAqIDEwMjQpCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDUxMiAqIDEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkoMjU2KQogI2RlZmluZSBDT05GSUdfU1lTX0JPT1RNQVBTWgkJKDggKiAxMDI0ICogMTAyNCkKIAogLyogRkxBU0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zaGFubm9uLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc2hhbm5vbi5oCmluZGV4IGQ4NDg5MTUuLmUwMmQ1ZTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zaGFubm9uLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3NoYW5ub24uaApAQCAtNTEsNyArNTEsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc21kazI0MDAuaCBiL2luY2x1ZGUvY29uZmlncy9zbWRrMjQwMC5oCmluZGV4IGZkNTEyMTkuLjA2NDc0OWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zbWRrMjQwMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zbWRrMjQwMC5oCkBAIC01Miw3ICs1Miw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zbWRrMjQxMC5oIGIvaW5jbHVkZS9jb25maWdzL3NtZGsyNDEwLmgKaW5kZXggZjlkMWU1NS4uNjJmZTk3ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3NtZGsyNDEwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3NtZGsyNDEwLmgKQEAgLTQ5LDcgKzQ5LDYgQEAKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwogCiAvKgogICogSGFyZHdhcmUgZHJpdmVycwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NtZGs2NDAwLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc21kazY0MDAuaAppbmRleCA0NTFiNTM0Li5mODlmYzNlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc21kazY0MDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc21kazY0MDAuaApAQCAtNzEsNyArNzEsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTAyNCAqIDEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc21ka2MxMDAuaCBiL2luY2x1ZGUvY29uZmlncy9zbWRrYzEwMC5oCmluZGV4IGJmZDA5YTAuLjZiZWE1YjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zbWRrYzEwMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zbWRrYzEwMC5oCkBAIC02Myw3ICs2Myw2IEBACiAgKiAxTUIgPSAweDEwMDAwMCwgMHgxMDAwMDAgPSAxMDI0ICogMTAyNAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKENPTkZJR19FTlZfU0laRSArICgxIDw8IDIwKSkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIGZvciAqLwogCQkJCQkJLyogaW5pdGlhbCBkYXRhICovCiAvKgogICogc2VsZWN0IHNlcmlhbCBjb25zb2xlIGNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zb2NyYXRlcy5oIGIvaW5jbHVkZS9jb25maWdzL3NvY3JhdGVzLmgKaW5kZXggMGJiYWQxNi4uNWYyZmIxZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3NvY3JhdGVzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3NvY3JhdGVzLmgKQEAgLTE3MCwxMCArMTcwLDkgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhlNDAxMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyZXNzCSovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4NDAwMAkJLyogRW5kIHVzZWQgYXJlYSBpbiBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4NDAwMAkJLyogU2l6ZSB1c2VkIGFyZWEgaW4gUkFNKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMzg0ICogMTAyNCkJLyogUmVzZXJ2ZSAzODRLaUIgZm9yIE1vbiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NvcmNlcnkuaCBiL2luY2x1ZGUvY29uZmlncy9zb3JjZXJ5LmgKaW5kZXggNzViOGU2MC4uZjFjYmU5NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3NvcmNlcnkuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc29yY2VyeS5oCkBAIC0yMjcsMTAgKzIyNyw5IEBACiAKIC8qIFVzZSBTUkFNIHVudGlsIFJBTSB3aWxsIGJlIGF2YWlsYWJsZSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJKENPTkZJR19TWVNfTUJBUiArIDB4MjAwMDApCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4ODAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDgwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCUNPTkZJR19TWVNfVEVYVF9CQVNFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc3BjMTkyMC5oIGIvaW5jbHVkZS9jb25maWdzL3NwYzE5MjAuaAppbmRleCA0ZDE4NzQ3Li5lMzlkM2JkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc3BjMTkyMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zcGMxOTIwLmgKQEAgLTE0Myw5ICsxNDMsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NwZWFyLWNvbW1vbi5oIGIvaW5jbHVkZS9jb25maWdzL3NwZWFyLWNvbW1vbi5oCmluZGV4IGNjNTJlMzkuLjRlNWJkZWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zcGVhci1jb21tb24uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc3BlYXItY29tbW9uLmgKQEAgLTE4MSw3ICsxODEsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJCTB4MDA4MDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJCTB4MDQwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkJKDEwMjQqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCQkxMjgKICNkZWZpbmUgQ09ORklHX0lERU5UX1NUUklORwkJCSItU1BFQXIiCiAjZGVmaW5lIENPTkZJR19TWVNfTE9OR0hFTFAKICNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFQJCQkidS1ib290PiAiCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc3BpZXZhbC5oIGIvaW5jbHVkZS9jb25maWdzL3NwaWV2YWwuaAppbmRleCBiNWFjMTY4Li5kNjE5NWIxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc3BpZXZhbC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zcGlldmFsLmgKQEAgLTI3MSwxMCArMjcxLDEwIEBACiAKIC8qIExpc3Qgb2YgSTJDIGFkZHJlc3NlcyB0byBiZSB2ZXJpZmllZCBieSBQT1NUICovCiAjaWYgZGVmaW5lZCAoQ09ORklHX01JTklGQVApCi0jdW5kZWYgSTJDX0FERFJfTElTVAotI2RlZmluZSBJMkNfQUREUl9MSVNUCXsJQ09ORklHX1NZU19JMkNfRUVQUk9NX0FERFIsCVwKLQkJCQlDT05GSUdfU1lTX0kyQ19IV01PTl9BRERSLAlcCi0JCQkJQ09ORklHX1NZU19JMkNfU0xBVkUgfQorI3VuZGVmIENPTkZJR19TWVNfUE9TVF9JMkNfQUREUlMKKyNkZWZpbmUgQ09ORklHX1NZU19QT1NUX0kyQ19BRERSUwl7Q09ORklHX1NZU19JMkNfRUVQUk9NX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0hXTU9OX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1NMQVZFfQogI2VuZGlmCiAKIC8qCkBAIC0zMjIsMTQgKzMyMiwxMyBAQAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJTVBDNVhYWF9TUkFNCiAjaWZkZWYgQ09ORklHX1BPU1QKIC8qIHByZXNlcnZlIHNwYWNlIGZvciB0aGUgcG9zdF93b3JkIGF0IGVuZCBvZiBvbi1jaGlwIFNSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1BPU1RfU0laRQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJTVBDNVhYWF9TUkFNX1BPU1RfU0laRQogI2Vsc2UKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1NJWkUKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCU1QQzVYWFhfU1JBTV9TSVpFCiAjZW5kaWYKIAogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJQ09ORklHX1NZU19URVhUX0JBU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zdHhncDMuaCBiL2luY2x1ZGUvY29uZmlncy9zdHhncDMuaAppbmRleCA0NzlmYmFiLi5jMjQ5N2FkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc3R4Z3AzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3N0eGdwMy5oCkBAIC0xNTUsMTAgKzE1NSw5IEBACiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICAgICAgIDB4NjAwMDAwMDAgICAgICAvKiBJbml0aWFsIFJBTSBhZGRyZXNzICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDQwMDAJCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDQwMDAJCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMjU2ICogMTAyNCkgICAgLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3N0eHNzYS5oIGIvaW5jbHVkZS9jb25maWdzL3N0eHNzYS5oCmluZGV4IDZlYTU4MDcuLjk5NjEyMGEwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc3R4c3NhLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3N0eHNzYS5oCkBAIC0xNjcsMTAgKzE2Nyw5IEBACiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4NjAwMDAwMDAJLyogSW5pdGlhbCBSQU0gYWRkcmVzcwkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDQwMDAJCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDQwMDAJCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMjU2ICogMTAyNCkJLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3N0eHh0Yy5oIGIvaW5jbHVkZS9jb25maWdzL3N0eHh0Yy5oCmluZGV4IGI5NzM5ZmYuLjg5MDE4NmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zdHh4dGMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc3R4eHRjLmgKQEAgLTE2OCw5ICsxNjgsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MzAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MzAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3N2bV9zYzh4eC5oIGIvaW5jbHVkZS9jb25maWdzL3N2bV9zYzh4eC5oCmluZGV4IDIxOWI4NWIuLjIyNDg2ODAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zdm1fc2M4eHguaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc3ZtX3NjOHh4LmgKQEAgLTE5Myw5ICsxOTMsOCBAQAogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSkKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JTU1SCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fRU5ECTB4MkYwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk2NCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MkYwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3QzY29ycC5oIGIvaW5jbHVkZS9jb25maWdzL3QzY29ycC5oCmluZGV4IGQwMGU2NGUuLjYxMTVhNWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy90M2NvcnAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvdDNjb3JwLmgKQEAgLTk3LDEwICs5Nyw5IEBACiAgKiBJbml0aWFsIFJBTSAmIHN0YWNrIHBvaW50ZXIgKHBsYWNlZCBpbiBPQ00pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0JBU0UJLyogT0NNICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECSg0IDw8IDEwKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMjU2CS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCSg0IDw8IDEwKQogI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCBcCi0JKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3RhaWh1LmggYi9pbmNsdWRlL2NvbmZpZ3MvdGFpaHUuaAppbmRleCA2ZTlkYmM1Li5hMzczOGI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvdGFpaHUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvdGFpaHUuaApAQCAtMjg4LDEwICsyODgsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX0FERFIJMHhGODAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUJMHgxMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIgLyogaW5zaWRlIG9mIFNEUkFNCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVCAgICAgIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy90YWlzaGFuLmggYi9pbmNsdWRlL2NvbmZpZ3MvdGFpc2hhbi5oCmluZGV4IDEyZjM1YWUuLjMwNDYwODEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy90YWlzaGFuLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3RhaXNoYW4uaApAQCAtNjgsMTAgKzY4LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19URU1QX1NUQUNLX09DTQkxCiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUglDT05GSUdfU1lTX0lTUkFNX0JBU0UKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSVNSQU1fQkFTRSAgLyogSW5pdGlhbCBSQU0gYWRkcmVzcwkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDIwMDAJCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDIwMDAJCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJKENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUIC0gMHg0KQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvdG5ldHYxMDd4X2V2bS5oIGIvaW5jbHVkZS9jb25maWdzL3RuZXR2MTA3eF9ldm0uaAppbmRleCBmNDIzYTBlLi42ODI5MGVmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvdG5ldHYxMDd4X2V2bS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy90bmV0djEwN3hfZXZtLmgKQEAgLTUwLDcgKzUwLDYgQEAKIAogLyogTWVtb3J5IEluZm8gKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMHgxMDAwMCArIDEqMTAyNCoxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CiAjZGVmaW5lIFBIWVNfU0RSQU1fMQkJCVRORVRWMTA3WF9ERFJfRU1JRl9EQVRBX0JBU0UKICNkZWZpbmUgUEhZU19TRFJBTV8xX1NJWkUJCTB4MDQwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCVBIWVNfU0RSQU1fMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3RueV9hOTI2MC5oIGIvaW5jbHVkZS9jb25maWdzL3RueV9hOTI2MC5oCmluZGV4IDVhZjJhZjMuLjMxYTBiZGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy90bnlfYTkyNjAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvdG55X2E5MjYwLmgKQEAgLTE2NCw3ICsxNjQsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCVJPVU5EKDMgKiBDT05GSUdfRU5WX1NJWkUgKyAxMjggKiAxMDI0LCAweDEwMDApCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogMTI4IGJ5dGVzIGZvciBpbml0aWFsIGRhdGEgKi8KIAogI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFCSgzMiAqIDEwMjQpCS8qIHJlZ3VsYXIgc3RhY2sgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3RyYWIuaCBiL2luY2x1ZGUvY29uZmlncy90cmFiLmgKaW5kZXggOTgyNzE5NS4uZDU3MzZhMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3RyYWIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvdHJhYi5oCkBAIC05NSw3ICs5NSw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCShDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy90cml6ZXBzaXYuaCBiL2luY2x1ZGUvY29uZmlncy90cml6ZXBzaXYuaAppbmRleCA0NzQzNDk1Li4yNTEyZjkzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvdHJpemVwc2l2LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3RyaXplcHNpdi5oCkBAIC00NCw2ICs0NCw3IEBACiAKICNkZWZpbmUgQ09ORklHX01NQwkJMQogI2RlZmluZSBCT0FSRF9MQVRFX0lOSVQJCTEKKyNkZWZpbmUJQ09ORklHX1NZU19URVhUX0JBU0UJMHgwCiAKICN1bmRlZiBDT05GSUdfVVNFX0lSUQkJCS8qIHdlIGRvbid0IG5lZWQgSVJRL0ZJUSBzdHVmZiAqLwogCkBAIC01Niw3ICs1Nyw2IEBACiAgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JICAgIChDT05GSUdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKQEAgLTIxMyw3ICsyMTMsNyBAQAogI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBU0UJCVBIWVNfRkxBU0hfMQogCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJUEhZU19TRFJBTV8xCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICsgUEhZU19TRFJBTV8xKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFICsgUEhZU19TRFJBTV8xKQogCiAvKgogICogR1BJTyBzZXR0aW5ncwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3R4MjUuaCBiL2luY2x1ZGUvY29uZmlncy90eDI1LmgKaW5kZXggOTk2YWZhMy4uOGY4YTFhMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3R4MjUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvdHgyNS5oCkBAIC02Niw3ICs2Niw2IEBACiAvKiBtYWxsb2MoKSBsZW4gKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMSA8PCAyMCkJLyogMSBNaUIgKi8KIC8qIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAogLyoKICAqIEJvYXJkIGhhcyAyIDMyTUIgYmFua3Mgb2YgRFJBTSBidXQgdGhlcmUgaXMgYSBidWcgd2hlbiB1c2luZwogICogYm90aCBzbyBvbmx5IHRoZSBmaXJzdCBpcyBjb25maWd1cmVkCkBAIC0xNzksNiArMTc4LDYgQEAKIC8qIGFkZGl0aW9ucyBmb3IgbmV3IHJlbG9jYXRpb24gY29kZSwgbXVzdCBiZSBhZGRlZCB0byBhbGwgYm9hcmRzICovCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJUEhZU19TRFJBTV8xCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoQ09ORklHX1NZU19TRFJBTV9CQVNFICsgMHgxMDAwIC0gLyogRml4IHRoaXMgKi8gXAotCQkJCQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisJCQkJCUdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAjZW5kaWYgLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3VjMTAwLmggYi9pbmNsdWRlL2NvbmZpZ3MvdWMxMDAuaAppbmRleCA1MzkyZmI1Li45ZGEzMThkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvdWMxMDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvdWMxMDAuaApAQCAtMjAwLDkgKzIwMCw4IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKQogICovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX0lNTVIKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyRjAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTY0ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJMHgyRjAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIERQUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvdXR4ODI0NS5oIGIvaW5jbHVkZS9jb25maWdzL3V0eDgyNDUuaAppbmRleCBjMDI3ZjQ2Li5iYjlmNjA2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvdXR4ODI0NS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy91dHg4MjQ1LmgKQEAgLTE5NiwxMCArMTk2LDkgQEAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX0RBVEFfU0laRSAgICAxMjgJLyogU2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgKi8KIAkJCQkJCQkJCS8qIGluaXRpYWwgZGF0YSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgICAgIDB4NDAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQgICAgICAweDEwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0lOSVRfREFUQV9TSVpFKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4Ci0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAgICAgIDB4MTAwMAorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfREFUQV9PRkZTRVQgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBDT05GSUdfU1lTX0lOSVRfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAgKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBOUzE2NTUwIENvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy92MzcuaCBiL2luY2x1ZGUvY29uZmlncy92MzcuaAppbmRleCBjMzRiNmU4Li5hM2ZkYzM4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvdjM3LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3YzNy5oCkBAIC0xNTgsOSArMTU4LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy92MzhiLmggYi9pbmNsdWRlL2NvbmZpZ3MvdjM4Yi5oCmluZGV4IDk2ZmZjNmEuLjQ3YmI4NDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy92MzhiLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3YzOGIuaApAQCAtMjI3LDEwICsyMjcsOSBAQAogCiAvKiBVc2UgU1JBTSB1bnRpbCBSQU0gd2lsbCBiZSBhdmFpbGFibGUgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCU1QQzVYWFhfU1JBTQotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlNUEM1WFhYX1NSQU1fU0laRQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIERQUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQlNUEM1WFhYX1NSQU1fU0laRQkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBEUFJBTSAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJQ09ORklHX1NZU19URVhUX0JBU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy92ZTgzMTMuaCBiL2luY2x1ZGUvY29uZmlncy92ZTgzMTMuaAppbmRleCAyODNiOTJjLi5hYmI1N2ZlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvdmU4MzEzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3ZlODMxMy5oCkBAIC0xNzEsMTEgKzE3MSwxMCBAQAogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSwkxCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweEZEMDAwMDAwIC8qIEluaXRpYWwgUkFNIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCTB4MTAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJMHgxMDAwCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTB4MTAwCS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gXAotCQkJCQkgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gXAorCQkJCQkgR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogLyogQ09ORklHX1NZU19NT05JVE9SX0xFTiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgQ09ORklHX0VOVl9TRUNUX1NJWkUgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy92ZXJzYXRpbGUuaCBiL2luY2x1ZGUvY29uZmlncy92ZXJzYXRpbGUuaAppbmRleCA0MjczYjg0Li40NWQ4NDM0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvdmVyc2F0aWxlLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3ZlcnNhdGlsZS5oCkBAIC03Niw3ICs3Niw2IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoQ09ORklHX0VOVl9TSVpFICsgMTI4ICogMTAyNCkKIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvdmlydGxhYjIuaCBiL2luY2x1ZGUvY29uZmlncy92aXJ0bGFiMi5oCmluZGV4IDU2ZmI1ZjcuLjQ2NmQ5MzAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy92aXJ0bGFiMi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy92aXJ0bGFiMi5oCkBAIC0xNzYsOSArMTc2LDggQEAKICAqIERlZmluaXRpb25zIGZvciBpbml0aWFsIHN0YWNrIHBvaW50ZXIgYW5kIGRhdGEgYXJlYSAoaW4gRFBSQU0pCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSU1NUgotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDJGMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBEUFJBTQkqLwotI2RlZmluZQlDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJNjQgIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDJGMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gRFBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy92aXNpb24yLmggYi9pbmNsdWRlL2NvbmZpZ3MvdmlzaW9uMi5oCmluZGV4IGEyZWNiZTUuLjFkOTcxOTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy92aXNpb24yLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3Zpc2lvbjIuaApAQCAtNDYsNyArNDYsNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCSgyMDQ4ICogMTAyNCkKIAogLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgKIAogLyoKICAqIEhhcmR3YXJlIGRyaXZlcnMKQEAgLTE5Miw5ICsxOTEsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHgxRkZFODAwMAogCiAjaWZuZGVmIENPTkZJR19TWVNfQVJNX1dJVEhPVVRfUkVMT0MKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCSg2NCAqIDEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIFwKLQkJCQkJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJCSg2NCAqIDEwMjQpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBcCisJCQkJCUdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIFwKIAkJCQkJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQpCiAjdW5kZWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QKQEAgLTIxMSw0ICsyMTAsMTggQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX05PX0ZMQVNICiAKKy8qCisgKiBGcmFtZWJ1ZmZlciBhbmQgTENECisgKi8KKyNkZWZpbmUgQ09ORklHX1BSRUJPT1QKKyNkZWZpbmUgQ09ORklHX0xDRAorI2RlZmluZSBDT05GSUdfVklERU9fTVg1CisjZGVmaW5lIENPTkZJR19TWVNfQ09OU09MRV9FTlZfT1ZFUldSSVRFCisjZGVmaW5lIENPTkZJR19TWVNfQ09OU09MRV9PVkVSV1JJVEVfUk9VVElORQorI2RlZmluZSBDT05GSUdfU1lTX0NPTlNPTEVfSVNfSU5fRU5WCisjZGVmaW5lIExDRF9CUFAJCUxDRF9DT0xPUjE2CisjZGVmaW5lIENPTkZJR19TUExBU0hfU0NSRUVOCisjZGVmaW5lIENPTkZJR19DTURfQk1QCisjZGVmaW5lIENPTkZJR19CTVBfMTZCUFAKKwogI2VuZGlmCQkJCS8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy92bWU4MzQ5LmggYi9pbmNsdWRlL2NvbmZpZ3Mvdm1lODM0OS5oCmluZGV4IDJjOTVjMTIuLmQxNTM3NjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy92bWU4MzQ5LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3ZtZTgzNDkuaApAQCAtMTYxLDExICsxNjEsMTAgQEAKIAogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhGNzAwMDAwMAkvKiBJbml0aWFsIFJBTSBhZGRyICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECQkweDEwMDAJCS8qIHNpemUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCQkweDEwMDAJCS8qIHNpemUgKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMHgxMDAJCS8qIHNpemUgaW5pdCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIFwKLQkJCQkJIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIFwKKwkJCQkJIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDI1NiAqIDEwMjQpCS8qIFJlc2VydmUgMjU2IGtCICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvdm9pY2VibHVlLmggYi9pbmNsdWRlL2NvbmZpZ3Mvdm9pY2VibHVlLmgKaW5kZXggZDQ2NzE3Yy4uYzI1ODAzMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3ZvaWNlYmx1ZS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy92b2ljZWJsdWUuaApAQCAtNzEsNyArNzEsNiBAQAogLyoKICAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbCBhbmQgc3RhY2sKICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CiAjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJKDQgKiAxMDI0ICogMTAyNCkKICNkZWZpbmUgQ09ORklHX1NUQUNLU0laRQkJKDEgKiAxMDI0ICogMTAyNCkKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3ZwYWMyNzAuaCBiL2luY2x1ZGUvY29uZmlncy92cGFjMjcwLmgKaW5kZXggYzlkOWM2OS4uMzVhZmNkMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3ZwYWMyNzAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvdnBhYzI3MC5oCkBAIC0yNywxMyArMjcsMTMgQEAKICAqLwogI2RlZmluZQlDT05GSUdfUFhBMjdYCQkxCS8qIE1hcnZlbGwgUFhBMjcwIENQVSAqLwogI2RlZmluZQlDT05GSUdfVlBBQzI3MAkJMQkvKiBWb2lwYWMgUFhBMjcwIGJvYXJkICovCisjZGVmaW5lCUNPTkZJR19TWVNfVEVYVF9CQVNFCTB4MAogCiAvKgogICogRW52aXJvbm1lbnQgc2V0dGluZ3MKICAqLwogI2RlZmluZQlDT05GSUdfRU5WX09WRVJXUklURQogI2RlZmluZQlDT05GSUdfU1lTX01BTExPQ19MRU4JCSgxMjgqMTAyNCkKLSNkZWZpbmUJQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAogI2RlZmluZQlDT05GSUdfQVJDSF9DUFVfSU5JVAogI2RlZmluZQlDT05GSUdfQk9PVENPTU1BTkQJCQkJCQlcCiAJImlmIG1tYyBpbml0ICYmIGZhdGxvYWQgbW1jIDAgMHhhNDAwMDAwMCB1SW1hZ2U7IHRoZW4gIgkJXApAQCAtMTg0LDcgKzE4NCw3IEBACiAjZGVmaW5lCUNPTkZJR19TWVNfSVBMX0xPQURfQUREUgkoMHg1YzAwMDAwMCkKICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQlQSFlTX1NEUkFNXzEKICNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJCVwKLQkoUEhZU19TRFJBTV8xICsgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICsgMjA0OCkKKwkoUEhZU19TRFJBTV8xICsgR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUgKyAyMDQ4KQogCiAvKgogICogTk9SIEZMQVNICmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvd2FsbnV0LmggYi9pbmNsdWRlL2NvbmZpZ3Mvd2FsbnV0LmgKaW5kZXggNzJhYzRlMy4uZDEwZjc0OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3dhbG51dC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy93YWxudXQuaApAQCAtMjE3LDkgKzIxNyw4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9EQ0FDSEVfQ1MJNAkvKiB1c2UgY3MgIyA0IGZvciBkYXRhIGNhY2hlIG1lbW9yeSAgICAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDQwMDAwMDAwICAvKiBpbnNpZGUgb2YgU0RSQU0JCQkgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkweDIwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSAgICAgIDEyOCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCTB4MjAwMAkvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JICAgICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUICAgIChDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvd2VwZXAyNTAuaCBiL2luY2x1ZGUvY29uZmlncy93ZXBlcDI1MC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTYxYTI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvY29uZmlncy93ZXBlcDI1MC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTk5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgRVRDIHMuci5vLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCi0gKiBNQSAwMjExMS0xMzA3IFVTQQotICoKLSAqIFdyaXR0ZW4gYnkgUGV0ZXIgRmlndWxpIDxwZXBvc2hAZXRjLnNrPiwgMjAwMy4KLSAqCi0gKi8KLQotI2lmbmRlZiBfX0NPTkZJR19ICi0jZGVmaW5lIF9fQ09ORklHX0gKLQotI2RlZmluZSBDT05GSUdfUFhBMjUwICAgICAgICAgIDEgICAgICAgIC8qIHRoaXMgaXMgYW4gUFhBMjUwIENQVSAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1dFUEVQMjUwICAgICAgICAxICAgICAgICAvKiBjb25maWcgZm9yIHdlcGVwMjUwIGJvYXJkICovCi0jdW5kZWYgIENPTkZJR19VU0VfSVJRICAgICAgICAgICAgICAgICAgLyogZG9uJ3QgbmVlZCB1c2UgSVJRL0ZJUSAgICAqLwotCi0vKiB3ZSB3aWxsIG5ldmVyIGVuYWJsZSBkY2FjaGUsIGJlY2F1c2Ugd2UgaGF2ZSB0byBzZXR1cCBNTVUgZmlyc3QgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19OT19EQ0FDSEUKLQotLyoKLSAqIFNlbGVjdCBzZXJpYWwgY29uc29sZSBjb25maWd1cmF0aW9uCi0gKi8KLSNkZWZpbmUgQ09ORklHX1BYQV9TRVJJQUwKLSNkZWZpbmUgQ09ORklHX0JUVUFSVCAgICAgICAgICAxICAgICAgIC8qIEJUVUFSVCBpcyBkZWZhdWx0IG9uIFdFUCBkZXYgYm9hcmQgKi8KLSNkZWZpbmUgQ09ORklHX0JBVURSQVRFICAgMTE1MjAwCi0KLQotLyoKLSAqIEJPT1RQIG9wdGlvbnMKLSAqLwotI2RlZmluZSBDT05GSUdfQk9PVFBfQk9PVEZJTEVTSVpFCi0jZGVmaW5lIENPTkZJR19CT09UUF9CT09UUEFUSAotI2RlZmluZSBDT05GSUdfQk9PVFBfR0FURVdBWQotI2RlZmluZSBDT05GSUdfQk9PVFBfSE9TVE5BTUUKLQotCi0vKgotICogQ29tbWFuZCBsaW5lIGNvbmZpZ3VyYXRpb24uCi0gKi8KLSNpbmNsdWRlIDxjb25maWdfY21kX2RlZmF1bHQuaD4KLQotI3VuZGVmIENPTkZJR19DTURfQ09OU09MRQotI3VuZGVmIENPTkZJR19DTURfTE9BRFMKLSN1bmRlZiBDT05GSUdfQ01EX05FVAotI3VuZGVmIENPTkZJR19DTURfU09VUkNFCi0KLQotLyoKLSAqIEJvb3Qgb3B0aW9ucy4gU2V0dGluZyBkZWxheSB0byAtMSBzdG9wcyBhdXRvc3RhcnQgY291bnQgZG93bi4KLSAqIE5PVEU6IFNlbmRpbmcgcGFyYW1ldGVycyB0byBrZXJuZWwgZGVwZW5kcyBvbiBrZXJuZWwgdmVyc2lvbiBhbmQKLSAqIDIuNC4xOS1ybWs2LXB4YTEgcGF0Y2ggdXNlZCB3aGlsZSBteSB1LWJvb3QgY29kaW5nIGRpZG4ndCBhY2NlcHQKLSAqIHBhcmFtZXRlcnMgYXQgYWxsISBEbyBub3QgZ2V0IGNvbmZ1c2VkIGJ5IHRoZW0gc28uCi0gKi8KLSNkZWZpbmUgQ09ORklHX0JPT1RERUxBWSAgIC0xCi0jZGVmaW5lIENPTkZJR19CT09UQVJHUyAgICAicm9vdD0vZGV2L210ZGJsb2NrMiBtZW09MzJtIGNvbnNvbGU9dHR5UzAxLDExNTIwMG44IgotI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQgImJvb3RtIDQwMDAwIgotCi0KLS8qCi0gKiBHZW5lcmFsIG9wdGlvbnMgZm9yIHUtYm9vdC4gTW9kaWZ5IHRvIHNhdmUgbWVtb3J5IGZvb3QgcHJpbnQKLSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0xPTkdIRUxQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVuZGVmIHNhdmVzIG1lbW9yeSAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFQgICAgICAgICAgICAgICJXRVA+ICIgICAgICAgICAgICAgICAvKiBwcm9tcHQgc3RyaW5nICAgICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfQ0JTSVpFICAgICAgICAgICAgICAyNTYgICAgICAgICAgICAgICAgICAgLyogY29uc29sZSBJL08gYnVmZmVyICAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BCU0laRSAoQ09ORklHX1NZU19DQlNJWkUrc2l6ZW9mKENPTkZJR19TWVNfUFJPTVBUKSsxNikgLyogcHJpbnQgYnVmZmVyIHNpemUgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX01BWEFSR1MgICAgICAgICAgICAgMTYgICAgICAgICAgICAgICAgICAgIC8qIG1heCBjb21tYW5kIGFyZ3MgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19CQVJHU0laRSAgICAgICAgICAgIENPTkZJR19TWVNfQ0JTSVpFICAgICAgICAgICAgLyogYm9vdCBhcmdzIGJ1ZiBzaXplICAqLwotCi0jZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9TVEFSVCAgICAgICAweGEwNDAwMDAwICAgICAgICAgICAgLyogbWVtdGVzdCB0ZXN0IGFyZWEgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5EICAgICAgICAgMHhhMDgwMDAwMAotCi0jZGVmaW5lIENPTkZJR19TWVNfSFoJCQkxMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfQ1BVU1BFRUQgICAgICAgICAgICAweDE0MSAgICAgICAgLyogY29yZSBjbG9jayAtIHJlZ2lzdGVyIHZhbHVlICAqLwotCi0jZGVmaW5lIENPTkZJR19TWVNfQkFVRFJBVEVfVEFCTEUgICAgICB7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCB9Ci0KLS8qCi0gKiBEZWZpbml0aW9ucyByZWxhdGVkIHRvIHBhc3NpbmcgYXJndW1lbnRzIHRvIGtlcm5lbC4KLSAqLwotI2RlZmluZSBDT05GSUdfQ01ETElORV9UQUcgICAgICAgICAgIDEgICAvKiBzZW5kIGNvbW1hbmRsaW5lIHRvIEtlcm5lbCAgICAgICAqLwotI2RlZmluZSBDT05GSUdfU0VUVVBfTUVNT1JZX1RBR1MgICAgIDEgICAvKiBzZW5kIG1lbW9yeSBkZWZpbml0aW9uIHRvIGtlcm5lbCAqLwotI3VuZGVmICBDT05GSUdfSU5JVFJEX1RBRyAgICAgICAgICAgICAgICAvKiBkbyBub3Qgc2VuZCBpbml0cmQgcGFyYW1zICAgICAgICAqLwotI3VuZGVmICBDT05GSUdfVkZEICAgICAgICAgICAgICAgICAgICAgICAvKiBkbyBub3Qgc2VuZCBmcmFtZWJ1ZmZlciBzZXR1cCAgICAqLwotCi0KLS8qCi0gKiBNYWxsb2MgcG9vbCBuZWVkIHRvIGhvc3QgZW52ICsgMTI4IEtiIHJlc2VydmUgZm9yIG90aGVyIGFsbG9jYXRpb25zLgotICovCi0jZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkgIChDT05GSUdfRU5WX1NJWkUgKyAoMTI4PDwxMCkgKQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotCi0jZGVmaW5lIENPTkZJR19TVEFDS1NJWkUgICAgICAgICgxMjA8PDEwKSAgICAgIC8qIHN0YWNrIHNpemUgKi8KLQotI2lmZGVmIENPTkZJR19VU0VfSVJRCi0jZGVmaW5lIENPTkZJR19TVEFDS1NJWkVfSVJRICAgICg0PDwxMCkgICAgICAgIC8qIElSUSBzdGFjayAgKi8KLSNkZWZpbmUgQ09ORklHX1NUQUNLU0laRV9GSVEgICAgKDQ8PDEwKSAgICAgICAgLyogRklRIHN0YWNrICAqLwotI2VuZGlmCi0KLS8qCi0gKiBTRFJBTSBNZW1vcnkgTWFwCi0gKi8KLSNkZWZpbmUgQ09ORklHX05SX0RSQU1fQkFOS1MgICAgMSAgICAgICAgICAgICAgICAvKiB3ZSBoYXZlIDEgYmFuayBvZiBTRFJBTSAqLwotI2RlZmluZSBXRVBfU0RSQU1fMSAgICAgICAgICAgIDB4YTAwMDAwMDAgICAgICAgIC8qIFNEUkFNIGJhbmsgIzEgICAgICAgICAgICovCi0jZGVmaW5lIFdFUF9TRFJBTV8xX1NJWkUgICAgICAgMHgwMjAwMDAwMCAgICAgICAgLyogMzIgTUIgKCAyIGNoaXAgKSAgICAgICAgKi8KLSNkZWZpbmUgV0VQX1NEUkFNXzIgICAgICAgICAgICAweGEyMDAwMDAwICAgICAgICAvKiBTRFJBTSBiYW5rICMyICAgICAgICAgICAqLwotI2RlZmluZSBXRVBfU0RSQU1fMl9TSVpFICAgICAgIDB4MDAwMDAwMDAgICAgICAgIC8qIDAgTUIgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIFdFUF9TRFJBTV8zICAgICAgICAgICAgMHhhODAwMDAwMCAgICAgICAgLyogU0RSQU0gYmFuayAjMyAgICAgICAgICAgKi8KLSNkZWZpbmUgV0VQX1NEUkFNXzNfU0laRSAgICAgICAweDAwMDAwMDAwICAgICAgICAvKiAwIE1CICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBXRVBfU0RSQU1fNCAgICAgICAgICAgIDB4YWMwMDAwMDAgICAgICAgIC8qIFNEUkFNIGJhbmsgIzQgICAgICAgICAgICovCi0jZGVmaW5lIFdFUF9TRFJBTV80X1NJWkUgICAgICAgMHgwMDAwMDAwMCAgICAgICAgLyogMCBNQiAgICAgICAgICAgICAgICAgICAgKi8KLQotI2RlZmluZSBDT05GSUdfU1lTX0RSQU1fQkFTRSAgICAgICAgICAgMHhhMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0RSQU1fU0laRSAgICAgICAgICAgMHgwMjAwMDAwMAotCi0vKiBVbmNvbW1lbnQgdXNlZCBTRFJBTSBjaGlwICovCi0jZGVmaW5lIFdFUF9TRFJBTV9LNFMyODE2MzMKLS8qI2RlZmluZSBXRVBfU0RSQU1fSzRTNTYxNjMzKi8KLQotCi0vKgotICogQ29uZmlndXJhdGlvbiBmb3IgRkxBU0ggbWVtb3J5Ci0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfQkFOS1MJMQkvKiBGTEFTSCBiYW5rcyBjb3VudCAobm90IGNoaXAgY291bnQpKi8KLSNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfU0VDVAkxMjgJLyogbnVtYmVyIG9mIHNlY3RvciBpbiBGTEFTSCBiYW5rICAgICovCi0jZGVmaW5lIFdFUF9GTEFTSF9CVVNfV0lEVEgJNAkvKiB3ZSB1c2UgMzIgYml0IEZMQVNIIG1lbW9yeS4uLiAgICAgKi8KLSNkZWZpbmUgV0VQX0ZMQVNIX0lOVEVSTEVBVkUJMgkvKiAuLi4gbWFkZSBvZiAyIGNoaXBzICovCi0jZGVmaW5lIFdFUF9GTEFTSF9CQU5LX1NJWkUgIDB4MjAwMDAwMCAgLyogc2l6ZSBvZiBvbmUgZmxhc2ggYmFuayovCi0jZGVmaW5lIFdFUF9GTEFTSF9TRUNUX1NJWkUgIDB4MDA0MDAwMCAgLyogc2l6ZSBvZiBlcmFzZSBzZWN0b3IgKi8KLSNkZWZpbmUgV0VQX0ZMQVNIX0JBU0UgICAgICAgMHgwMDAwMDAwICAvKiBsb2NhdGlvbiBvZiBmbGFzaCBtZW1vcnkgKi8KLSNkZWZpbmUgV0VQX0ZMQVNIX1VOTE9DSyAgICAgICAgMSAgICAgICAvKiBwZXJmb3JtIGh3IHVubG9jayBmaXJzdCAqLwotCi0KLS8qIFRoaXMgc2hvdWxkIGJlIGRlZmluZWQgaWYgQ0ZJIEZMQVNIIGRldmljZSBpcyBwcmVzZW50LiBBY3R1YWxseSBiZW5lZml0Ci0gICBpcyBub3Qgc28gY2xlYXIgdG8gbWUuIEluIG90aGVyIHdvcmRzIHdlIGNhbiBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb25zCi0gICB0byB1c2VyLCBidXQgdGhpcyBleHBlY3RzIG1vcmUgY29tcGxleCBmbGFzaCBoYW5kbGluZyB3ZSBkbyBub3QgcHJvdmlkZQotICAgbm93LiovCi0jdW5kZWYgIENPTkZJR19TWVNfRkxBU0hfQ0ZJCi0KLSNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9FUkFTRV9UT1VUICAgICgyKkNPTkZJR19TWVNfSFopICAgIC8qIHRpbWVvdXQgZm9yIEVyYXNlIG9wZXJhdGlvbiAqLwotI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX1dSSVRFX1RPVVQgICAgKDIqQ09ORklHX1NZU19IWikgICAgLyogdGltZW91dCBmb3IgV3JpdGUgb3BlcmF0aW9uICovCi0KLSNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFICAgICAgICAgIFdFUF9GTEFTSF9CQVNFCi0KLS8qCi0gKiBUaGlzIGlzIHNldHRpbmcgZm9yIEpGRlMyIHN1cHBvcnQgaW4gdS1ib290LgotICogUmlnaHQgbm93IHRoZXJlIGlzIG5vIGdhaW4gZm9yIHVzZXIsIGJ1dCBsYXRlciBvbiBib290aW5nIGtlcm5lbCBtaWdodCBiZQotICogcG9zc2libGUuIENvbnNpZGVyIHVzaW5nIFhJUCBrZXJuZWwgcnVubmluZyBmcm9tIGZsYXNoIHRvIHNhdmUgUkFNCi0gKiBmb290cHJpbnQuCi0gKiBOT1RFOiBFbmFibGUgQ09ORklHX0NNRF9KRkZTMiBmb3IgSkZGUzIgc3VwcG9ydC4KLSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0pGRlMyX0ZJUlNUX0JBTksJCTAKLSNkZWZpbmUgQ09ORklHX1NZU19KRkZTMl9GSVJTVF9TRUNUT1IJCTUKLSNkZWZpbmUgQ09ORklHX1NZU19KRkZTMl9OVU1fQkFOS1MJCTEKLQotLyoKLSAqIEVudmlyb25tZW50IHNldHVwLiBEZWZpbml0aW9ucyBvZiBtb25pdG9yIGxvY2F0aW9uIGFuZCBzaXplIHdpdGgKLSAqIGRlZmluaXRpb24gb2YgZW52aXJvbm1lbnQgc2V0dXAgZW5kcyB1cCBpbiAyIHBvc3NpYmlsaXRpZXMuCi0gKiAxLiBFbWJlZGVkIGVudmlyb25tZW50IC0gaW4gdS1ib290IGNvZGUgaXMgc3BhY2UgZm9yIGVudmlyb25tZW50Ci0gKiAyLiBFbnZpcm9ubWVudCBpcyByZWFkIGZyb20gcHJlZGVmaW5lZCBzZWN0b3Igb2YgZmxhc2gKLSAqIFJpZ2h0IG5vdyB3ZSBzdXBwb3J0IDIuIHBvc3NpYmxpdHksIGJ1dCBleHBlY3Rpbmcgbm8gZW52IHBsYWNlZAotICogb24gbWVudGlvbmVkIGFkZHJlc3MgcmlnaHQgbm93LiBUaGlzIGFsc28gbmVlZHMgdG8gcHJvdmlkZSB3aG9sZQotICogc2VjdG9yIGZvciBpdCAtIGZvciB1cyAyNTZLYiBpcyByZWFsbHkgd2FzdGUgb2YgbWVtb3J5LiBVLWJvb3QgdXNlcwotICogZGVmYXVsdCBlbnYuIGFuZCB1bnRpbCBrZXJuZWwgcGFyYW1ldGVycyBjb3VsZCBiZSBzZW50IHRvIGtlcm5lbAotICogZW52LiBoYXMgbm8gc2Vuc2UgdG8gdXMuCi0gKi8KLQotI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfQkFTRQlQSFlTX0ZMQVNIXzEKLSNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJMHgyMDAwMAkJLyogMTI4a2IgKCAxIGZsYXNoIHNlY3RvciApICAqLwotI2RlZmluZSBDT05GSUdfRU5WX0lTX0lOX0ZMQVNICTEKLSNkZWZpbmUgQ09ORklHX0VOVl9BRERSCQkweDIwMDAwCSAgICAgICAgLyogYWJzb2x1dGUgYWRkcmVzcyBmb3Igbm93ICAqLwotI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCTB4MjAwMAotCi0jZGVmaW5lCVBIWVNfU0RSQU1fMQkJCVdFUF9TRFJBTV8xCi0jZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJUEhZU19TRFJBTV8xCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICsgUEhZU19TRFJBTV8xKQotCi0jdW5kZWYgIENPTkZJR19FTlZfT1ZFUldSSVRFICAgICAgICAgICAgICAgICAgICAvKiBlbnYgaXMgbm90IHdyaXRhYmxlIG5vdyAgICovCi0KLS8qCi0gKiBXZWxsIHRoaXMgaGFzIHRvIGJlIGRlZmluZWQsIGJ1dCBvbiB0aGUgb3RoZXIgaGFuZCBpdCBpcyB1c2VkIGRpZmZlcmVudGx5Ci0gKiBvbmUgbWF5IGV4cGVjdC4gRm9yIGluc3RhbmNlIGxvYWRiIGNvbW1hbmQgZG8gbm90IGNhcmVzIDotKQotICogU28gYWR2aWNlIGlzIC0gZG8gbm90IHJlbGF5IG9uIHRoaXMuLi4KLSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUiAgICAgICAgMHg0MDAwMAotCi0jZW5kaWYgIC8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy94YWVuaWF4LmggYi9pbmNsdWRlL2NvbmZpZ3MveGFlbmlheC5oCmluZGV4IDY3ZDQxMDYuLmE3NWM0MjYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy94YWVuaWF4LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3hhZW5pYXguaApAQCAtNDIsNiArNDIsNyBAQAogICovCiAjZGVmaW5lIENPTkZJR19QWEEyNTAJCTEJLyogVGhpcyBpcyBhbiBQWEEyNTUgQ1BVICAgICovCiAjZGVmaW5lIENPTkZJR19YQUVOSUFYCQkxCS8qIG9uIGEgeGFlbmlheCBib2FyZAkgICAgKi8KKyNkZWZpbmUJQ09ORklHX1NZU19URVhUX0JBU0UJMHgwCiAKIAogI2RlZmluZSBCT0FSRF9MQVRFX0lOSVQJCTEKQEAgLTExNCw3ICsxMTUsNiBAQAogICogdXNlZCBmb3IgdGhlIFJBTSBjb3B5IG9mIHRoZSB1Ym9vdCBjb2RlCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCSAgICAoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCkBAIC0xNjgsNyArMTY4LDcgQEAKICNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFCQlQSFlTX0ZMQVNIXzEKIAogI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCVBIWVNfU0RSQU1fMQotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShHRU5FUkFURURfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKIAogLyoKICAqIEZMQVNIIGFuZCBlbnZpcm9ubWVudCBvcmdhbml6YXRpb24KQEAgLTQzNyw4ICs0MzcsOSBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfUFNTUl9WQUwJCTB4MDAwMDAwMzAKIAotI2RlZmluZSBDT05GSUdfU1lTX0NLRU5fVkFMICAgICAgICAgICAgMHgwMDAwMDA4MCAgLyogICovCi0jZGVmaW5lIENPTkZJR19TWVNfSUNNUl9WQUwgICAgICAgICAgICAweDAwMDAwMDAwICAvKiBObyBpbnRlcnJ1cHRzIGVuYWJsZWQgICAgICAgICovCisjZGVmaW5lIENPTkZJR19TWVNfQ0tFTgkJCTB4MDAwMDAwODAgIC8qICAqLworI2RlZmluZSBDT05GSUdfU1lTX0lDTVIJCQkweDAwMDAwMDAwICAvKiBObyBpbnRlcnJ1cHRzIGVuYWJsZWQgICAgICAgICovCisjZGVmaW5lCUNPTkZJR19TWVNfQ0NDUgkJCUNDQ1JfTDI3fENDQ1JfTTJ8Q0NDUl9OMTAKIAogCiAvKgpAQCAtNTYyLDYgKzU2Myw5IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NRE1SU19WQUwJCTB4MDAzMjAwMzIKIAorI2RlZmluZQlDT05GSUdfU1lTX0ZMWUNORkdfVkFMCQkweDAwMDAwMDAwCisjZGVmaW5lCUNPTkZJR19TWVNfU1hDTkZHX1ZBTAkJMHgwMDAwMDAwMAorCiAvKgogICogUENNQ0lBIGFuZCBDRiBJbnRlcmZhY2VzCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy94aWxpbngtcHBjLmggYi9pbmNsdWRlL2NvbmZpZ3MveGlsaW54LXBwYy5oCmluZGV4IGI0YTk2NzUuLjI0MjJjMGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy94aWxpbngtcHBjLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3hpbGlueC1wcGMuaApAQCAtOTEsMTAgKzkxLDkgQEAKIAogLypTdGFjayovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDgwMDAwMC8qIEluaXRpYWwgUkFNIGFkZHJlc3MgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCTB4MjAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIFwKLQkJCQktIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCQkweDIwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICAqLworI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIFwKKwkJCQktIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAvKlNwZWVkKi8KICNkZWZpbmUgQ09ORklHX1NZU19DTEtfRlJFUQlYUEFSX0NPUkVfQ0xPQ0tfRlJFUV9IWgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3htMjUwLmggYi9pbmNsdWRlL2NvbmZpZ3MveG0yNTAuaAppbmRleCAyZmY5YTI4Li40OTdjYjkxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MveG0yNTAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MveG0yNTAuaApAQCAtMzUsNiArMzUsNyBAQAogI2RlZmluZSBDT05GSUdfUFhBMjUwCSAgICAgICAxCS8qIFRoaXMgaXMgYW4gUFhBMjUwIENQVQkqLwogI2RlZmluZSBDT05GSUdfWE0yNTAJICAgICAgIDEJLyogb24gYSBNaWNyb1N5cyBYTTI1MCBCb2FyZAkqLwogI3VuZGVmIENPTkZJR19VU0VfSVJRCQkJLyogd2UgZG9uJ3QgbmVlZCBJUlEvRklRIHN0dWZmCSovCisjZGVmaW5lCUNPTkZJR19TWVNfVEVYVF9CQVNFCTB4MAogCiAvKiB3ZSB3aWxsIG5ldmVyIGVuYWJsZSBkY2FjaGUsIGJlY2F1c2Ugd2UgaGF2ZSB0byBzZXR1cCBNTVUgZmlyc3QgKi8KICNkZWZpbmUgQ09ORklHX1NZU19OT19EQ0FDSEUKQEAgLTQ1LDcgKzQ2LDYgQEAKICAqCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMjU2KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCkBAIC0xNzUsNyArMTc1LDcgQEAKICNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFCQlQSFlTX0ZMQVNIXzEKIAogI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCVBIWVNfU0RSQU1fMQotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKKyNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShHRU5FUkFURURfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKIAogLyoKICAqIEZMQVNIIGFuZCBlbnZpcm9ubWVudCBvcmdhbml6YXRpb24KQEAgLTMyMiw5ICszMjIsOSBAQAogICogQ2xvY2tzLCBwb3dlciBjb250cm9sIGFuZCBpbnRlcnJ1cHRzCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19QU1NSX1ZBTAkgICAgMHgwMDAwMDAzMAotI2RlZmluZSBDT05GSUdfU1lTX0NDQ1JfVkFMCSAgICAweDAwMDAwMTYxCS8qIDEwMCBNSHogbWVtb3J5LCA0MDAgTUh6IENQVSwgNDAwIFR1cmJvICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0NLRU5fVkFMCSAgICAweDAwMDE0MWVjCS8qIEZGVUFSVCBhbmQgU1RVQVJUIGVuYWJsZWQJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JQ01SX1ZBTAkgICAgMHgwMDAwMDAwMAkvKiBObyBpbnRlcnJ1cHRzIGVuYWJsZWQJKi8KKyNkZWZpbmUgQ09ORklHX1NZU19DQ0NSCQkgICAgMHgwMDAwMDE2MQkvKiAxMDAgTUh6IG1lbW9yeSwgNDAwIE1IeiBDUFUsIDQwMCBUdXJibyAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19DS0VOCQkgICAgMHgwMDAxNDFlYwkvKiBGRlVBUlQgYW5kIFNUVUFSVCBlbmFibGVkCSovCisjZGVmaW5lIENPTkZJR19TWVNfSUNNUgkJICAgIDB4MDAwMDAwMDAJLyogTm8gaW50ZXJydXB0cyBlbmFibGVkCSovCiAKIC8qIEZJWE1FCiAgKgpAQCAtMzQzLDYgKzM0Myw4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfTURDTkZHX1ZBTAkgICAgMHgwMDAwMDljOQogI2RlZmluZSBDT05GSUdfU1lTX01ETVJTX1ZBTAkgICAgMHgwMDIyMDAyMgogI2RlZmluZSBDT05GSUdfU1lTX01EUkVGUl9WQUwJICAgIDB4MDAwZGEwMTgJLyogSW5pdGlhbCBzZXR0aW5nLCBpbmRpdmlkdWFsIGJpdHMgc2V0IGluIGxvd2xldmVsX2luaXQuUyAqLworI2RlZmluZQlDT05GSUdfU1lTX0ZMWUNORkdfVkFMCQkweDAwMDAwMDAwCisjZGVmaW5lCUNPTkZJR19TWVNfU1hDTkZHX1ZBTAkJMHgwMDAwMDAwMAogCiAvKgogICogUENNQ0lBIGFuZCBDRiBJbnRlcmZhY2VzIChOT1QgVVNFRCwgdGhlc2UgdmFsdWVzIGZyb20gbHViYm9jayBpbml0KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1hQRURJVEUxMDAwLmggYi9pbmNsdWRlL2NvbmZpZ3MveHBlZGl0ZTEwMDAuaApzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBpbmNsdWRlL2NvbmZpZ3MvWFBFRElURTEwMDAuaApyZW5hbWUgdG8gaW5jbHVkZS9jb25maWdzL3hwZWRpdGUxMDAwLmgKaW5kZXggNTYwNTg0OS4uY2Q3MTQ4ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1hQRURJVEUxMDAwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3hwZWRpdGUxMDAwLmgKQEAgLTMzLDYgKzMzLDcgQEAKIC8qIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zICovCiAjZGVmaW5lIENPTkZJR19YUEVESVRFMTAwMAkxCiAjZGVmaW5lIENPTkZJR19TWVNfQk9BUkRfTkFNRQkiWFBlZGl0ZTEwMDAiCisjZGVmaW5lIENPTkZJR19TWVNfRk9STV9QTUMJMQogI2RlZmluZSBDT05GSUdfNHh4CQkxCQkvKiAuLi4gUFBDNHh4IGZhbWlseSAqLwogI2RlZmluZSBDT05GSUdfNDQwCQkxCiAjZGVmaW5lIENPTkZJR180NDBHWAkJMQkJLyogNDQwIEdYICovCkBAIC0xMDEsOSArMTAyLDggQEAKICNkZWZpbmUgQ09ORklHX1NZU19URU1QX1NUQUNLX09DTQkxCiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUglDT05GSUdfU1lTX0lTUkFNX0JBU0UKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfSVNSQU1fQkFTRQkvKiBJbml0aWFsIFJBTSBhZGRyZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECQkweDIwMDAJLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0gKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCQkweDIwMDAJLyogU2l6ZSBvZiB1c2VkIGFyZWEgaW4gUkFNICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAkoQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgLSAweDQpCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkoNTEyICogMTAyNCkJLyogUmVzZXJ2ZSA1MTIgS0IgZm9yIE1vbiAqLwpAQCAtMzQxLDggKzM0MSw4IEBACiAJIm1pc2NfYXJncz1pcD1vblwwIgkJCQkJCVwKIAkic2V0X2Jvb3RhcmdzPXNldGVudiBib290YXJncyAke2NvbnNvbGVfYXJnc30gJHtyb290X2FyZ3N9ICR7bWlzY19hcmdzfVwwIiBcCiAJImJvb3RmaWxlPS9ob21lL3VzZXIvZmlsZVwwIgkJCQkJXAotCSJvc2ZpbGU9L2hvbWUvdXNlci91SW1hZ2UtWFBlZGl0ZTEwMDBcMCIJCQlcCi0JImZkdGZpbGU9L2hvbWUvdXNlci94cGVkaXRlMTAwMC5kdGJcMCIJCQkJXAorCSJvc2ZpbGU9L2hvbWUvdXNlci9ib2FyZC51SW1hZ2VcMCIJCQkJXAorCSJmZHRmaWxlPS9ob21lL3VzZXIvYm9hcmQuZHRiXDAiCQkJCVwKIAkidWJvb3RmaWxlPS9ob21lL3VzZXIvdS1ib290LmJpblwwIgkJCQlcCiAJImZkdGFkZHI9YzAwMDAwXDAiCQkJCQkJXAogCSJvc2FkZHI9MHgxMDAwMDAwXDAiCQkJCQkJXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1hQRURJVEU1MTcwLmggYi9pbmNsdWRlL2NvbmZpZ3MveHBlZGl0ZTUxN3guaApzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBpbmNsdWRlL2NvbmZpZ3MvWFBFRElURTUxNzAuaApyZW5hbWUgdG8gaW5jbHVkZS9jb25maWdzL3hwZWRpdGU1MTd4LmgKaW5kZXggMTg1MTk5Ny4uY2I4M2E2NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1hQRURJVEU1MTcwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3hwZWRpdGU1MTd4LmgKQEAgLTIyLDcgKzIyLDcgQEAKICAqLwogCiAvKgotICogeHBlZGl0ZTUxNzAgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlCisgKiB4cGVkaXRlNTE3eCBib2FyZCBjb25maWd1cmF0aW9uIGZpbGUKICAqLwogI2lmbmRlZiBfX0NPTkZJR19ICiAjZGVmaW5lIF9fQ09ORklHX0gKQEAgLTM0LDYgKzM0LDcgQEAKICNkZWZpbmUgQ09ORklHX01QQzg2NDEJCTEJLyogTVBDODY0MSBzcGVjaWZpYyAqLwogI2RlZmluZSBDT05GSUdfWFBFRElURTUxNDAJMQkvKiBNUEM4NjQxSFBDTiBib2FyZCBzcGVjaWZpYyAqLwogI2RlZmluZSBDT05GSUdfU1lTX0JPQVJEX05BTUUJIlhQZWRpdGU1MTcwIgorI2RlZmluZSBDT05GSUdfU1lTX0ZPUk1fM1VfVlBYCTEKICNkZWZpbmUgQ09ORklHX0xJTlVYX1JFU0VUX1ZFQwkweDEwMAkvKiBSZXNldCB2ZWN0b3IgdXNlZCBieSBMaW51eCAqLwogI2RlZmluZSBDT05GSUdfQk9BUkRfRUFSTFlfSU5JVF9SCS8qIENhbGwgYm9hcmRfcHJlX2luaXQgKi8KICNkZWZpbmUgQ09ORklHX0JBVF9SVwkJMQkvKiBVc2UgY29tbW9uIEJBVCBydyBjb2RlICovCkBAIC0xMDcsNiArMTA4LDIxIEBACiAjZGVmaW5lIENPTkZJR19TWVNfQUxUX01FTVRFU1QKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCTB4MTAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJMHgyMDAwMDAwMAorI2RlZmluZSBDT05GSUdfUE9TVAkJCShDT05GSUdfU1lTX1BPU1RfTUVNT1JZIHxcCisJCQkJCSBDT05GSUdfU1lTX1BPU1RfSTJDKQorI2RlZmluZSBJMkNfQUREUl9MSVNUCQkJe0NPTkZJR19TWVNfSTJDX0RTMTYyMV9BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19EUzQ1MTBfQUREUiwJXAorCQkJCQkgQ09ORklHX1NZU19JMkNfRUVQUk9NX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0xNOTBfQUREUiwJXAorCQkJCQkgQ09ORklHX1NZU19JMkNfUENBOTU1M19BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIwLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIxLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIyLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIzLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19QRVg4NTE4X0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1JUQ19BRERSfQorLyogVGhlIFhQZWRpdGU1MTcwIGNhbiBob3N0IGFuIFhNQyB3aGljaCBoYXMgYW4gRUVQUk9NIGF0IGFkZHJlc3MgMHg1MCAqLworI2RlZmluZSBJMkNfQUREUl9JR05PUkVfTElTVAkJezB4NTB9CiAKIC8qCiAgKiBNZW1vcnkgbWFwCkBAIC0yMDIsMTAgKzIxOCw5IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4ZTAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCTB4MDAwMDQwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCQkweDAwMDA0MDAwCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDUxMiAqIDEwMjQpCS8qIFJlc2VydmUgNTEyIEtCIGZvciBNb24gKi8KQEAgLTI1OCw2ICsyNzMsNyBAQAogI2RlZmluZSBDT05GSUdfU1lTX0kyQ19EUzE2MjFfQUREUgkweDQ4CiAjZGVmaW5lIENPTkZJR19EVFRfRFMxNjIxCiAjZGVmaW5lIENPTkZJR19EVFRfU0VOU09SUwkJeyAwIH0KKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfTE05MF9BRERSCTB4NGMKIAogLyogSTJDIEVFUFJPTSAtIEFUMjRDMTI4QiAqLwogI2RlZmluZSBDT05GSUdfU1lTX0kyQ19FRVBST01fQUREUgkJMHg1NApAQCAtMjgxLDYgKzI5Nyw3IEBACiAjZGVmaW5lIENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjIJMHgxZQogI2RlZmluZSBDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIzCTB4MWYKICNkZWZpbmUgQ09ORklHX1NZU19JMkNfUENBOTUzWF9BRERSCUNPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjAKKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfUENBOTU1M19BRERSCTB4NjIKIAogLyoKICAqIFBVID0gcHVsbGVkIGhpZ2gsIFBEID0gcHVsbGVkIGxvdwpAQCAtMzI0LDE4ICszNDEsMTggQEAKICAqIE1lbW9yeSBzcGFjZSBpcyBtYXBwZWQgMS0xLCBidXQgSS9PIHNwYWNlIG11c3Qgc3RhcnQgZnJvbSAwLgogICovCiAvKiBQQ0lFMSAtIFBFWDg1MTggKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRQkweDgwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMV9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9CVVMJMHg4MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTCUNPTkZJR19TWVNfUENJRTFfTUVNX0JVUwogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9TSVpFCTB4NDAwMDAwMDAJLyogMUcgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19CQVNFCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19CVVMJCTB4MDAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTCTB4ZTgwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19TSVpFCTB4MDA4MDAwMDAJLyogOE0gKi8KIAogLyogUENJRTIgLSBWUFggUDEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRQkweGMwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMl9NRU1fQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9CVVMJMHhjMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9QSFlTCUNPTkZJR19TWVNfUENJRTJfTUVNX0JVUwogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9TSVpFCTB4MTAwMDAwMDAJLyogMjU2TSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX0JBU0UJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX0JVUwkJMHgwMDAwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1BIWVMJMHhlODgwMDAwMAogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1NJWkUJMHgwMDgwMDAwMAkvKiA4TSAqLwogCkBAIC01NDUsNiArNTYyLDcgQEAKICNkZWZpbmUgQ09ORklHX0NNRF9QQ0E5NTNYCiAjZGVmaW5lIENPTkZJR19DTURfUENBOTUzWF9JTkZPCiAjZGVmaW5lIENPTkZJR19DTURfUENJCisjZGVmaW5lIENPTkZJR19DTURfUENJX0VOVU0KICNkZWZpbmUgQ09ORklHX0NNRF9QSU5HCiAjZGVmaW5lIENPTkZJR19DTURfUkVHSU5GTwogI2RlZmluZSBDT05GSUdfQ01EX1NOVFAKQEAgLTcyNSw4ICs3NDMsOCBAQAogCSJtaXNjX2FyZ3M9aXA9b25cMCIJCQkJCQlcCiAJInNldF9ib290YXJncz1zZXRlbnYgYm9vdGFyZ3MgJHtjb25zb2xlX2FyZ3N9ICR7cm9vdF9hcmdzfSAke21pc2NfYXJnc31cMCIgXAogCSJib290ZmlsZT0vaG9tZS91c2VyL2ZpbGVcMCIJCQkJCVwKLQkib3NmaWxlPS9ob21lL3VzZXIvdUltYWdlLVhQZWRpdGU1MTcwXDAiCQkJXAotCSJmZHRmaWxlPS9ob21lL3VzZXIveHBlZGl0ZTUxNzAuZHRiXDAiCQkJCVwKKwkib3NmaWxlPS9ob21lL3VzZXIvYm9hcmQudUltYWdlXDAiCQkJCVwKKwkiZmR0ZmlsZT0vaG9tZS91c2VyL2JvYXJkLmR0YlwwIgkJCQlcCiAJInVib290ZmlsZT0vaG9tZS91c2VyL3UtYm9vdC5iaW5cMCIJCQkJXAogCSJmZHRhZGRyPWMwMDAwMFwwIgkJCQkJCVwKIAkib3NhZGRyPTB4MTAwMDAwMFwwIgkJCQkJCVwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9YUEVESVRFNTIwMC5oIGIvaW5jbHVkZS9jb25maWdzL3hwZWRpdGU1MjB4LmgKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gaW5jbHVkZS9jb25maWdzL1hQRURJVEU1MjAwLmgKcmVuYW1lIHRvIGluY2x1ZGUvY29uZmlncy94cGVkaXRlNTIweC5oCmluZGV4IGQwZTk0OTIuLmI2YjM5MWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9YUEVESVRFNTIwMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy94cGVkaXRlNTIweC5oCkBAIC0yMiw3ICsyMiw3IEBACiAgKi8KIAogLyoKLSAqIHhwZWRpdGU1MjAwIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZQorICogeHBlZGl0ZTUyMHggYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlCiAgKi8KICNpZm5kZWYgX19DT05GSUdfSAogI2RlZmluZSBfX0NPTkZJR19ICkBAIC0zNiw2ICszNiw3IEBACiAjZGVmaW5lIENPTkZJR19NUEM4NTQ4CQkxCiAjZGVmaW5lIENPTkZJR19YUEVESVRFNTIwMAkxCiAjZGVmaW5lIENPTkZJR19TWVNfQk9BUkRfTkFNRQkiWFBlZGl0ZTUyMDAiCisjZGVmaW5lIENPTkZJR19TWVNfRk9STV9QTUNfWE1DCTEKICNkZWZpbmUgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfUgkvKiBDYWxsIGJvYXJkX3ByZV9pbml0ICovCiAKICNpZm5kZWYgQ09ORklHX1NZU19URVhUX0JBU0UKQEAgLTkyLDYgKzkzLDEzIEBACiAjZGVmaW5lIENPTkZJR19TWVNfQUxUX01FTVRFU1QKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCTB4MTAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJMHgyMDAwMDAwMAorI2RlZmluZSBDT05GSUdfUE9TVAkJCShDT05GSUdfU1lTX1BPU1RfTUVNT1JZIHwgXAorCQkJCQkgQ09ORklHX1NZU19QT1NUX0kyQykKKyNkZWZpbmUgSTJDX0FERFJfTElTVAkJCXtDT05GSUdfU1lTX0kyQ19NQVgxMjM3X0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIwLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIxLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19SVENfQUREUn0KIAogLyoKICAqIE1lbW9yeSBtYXAKQEAgLTE3OCwxMCArMTg2LDkgQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhlMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJMHg0MDAwCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkJMHg0MDAwCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSg1MTIgKiAxMDI0KQkvKiBSZXNlcnZlIDUxMiBLQiBmb3IgTW9uICovCkBAIC0yNTAsNyArMjU3LDcgQEAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX0JSRF9DRkcyCQkweDA0CiAjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9YTUNfUk9PVDAJCTB4MDgKICNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX0ZMQVNIX1BBU1NfQ1MJMHgxMAotI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfRkxBU0hfV1AJCTB4MjAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX05WTV9XUAkJMHgyMAogI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfTU9OQVJDSAkJMHg0MAogI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfRVJFQURZCQkweDgwCiAKQEAgLTI2NCwxNCArMjcxLDE3IEBACiAjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9QMTRfSU82CQkweDQwCiAjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9QMTRfSU83CQkweDgwCiAKKy8qIDEyLWJpdCBBREMgdXNlZCB0byBtZWFzdXJlIENQVSBkaW9kZSAqLworI2RlZmluZSBDT05GSUdfU1lTX0kyQ19NQVgxMjM3X0FERFIJCTB4MzQKKwogLyoKICAqIEdlbmVyYWwgUENJCiAgKiBNZW1vcnkgc3BhY2UgaXMgbWFwcGVkIDEtMSwgYnV0IEkvTyBzcGFjZSBtdXN0IHN0YXJ0IGZyb20gMC4KICAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX0JBU0UJMHg4MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0kxX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fQlVTCQkweDgwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJMV9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSTFfTUVNX0JVUwogI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfTUVNX1NJWkUJMHg0MDAwMDAwMAkvKiAxRyAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fQkFTRQkJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSTFfSU9fQlVTCQkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19QSFlTCQkweGU4MDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJMV9JT19TSVpFCQkweDAwODAwMDAwCS8qIDFNICovCiAKQEAgLTMzOSw2ICszNDksNyBAQAogI2RlZmluZSBDT05GSUdfQ01EX1BDQTk1M1gKICNkZWZpbmUgQ09ORklHX0NNRF9QQ0E5NTNYX0lORk8KICNkZWZpbmUgQ09ORklHX0NNRF9QQ0kKKyNkZWZpbmUgQ09ORklHX0NNRF9QQ0lfRU5VTQogI2RlZmluZSBDT05GSUdfQ01EX1BJTkcKICNkZWZpbmUgQ09ORklHX0NNRF9TTlRQCiAjZGVmaW5lIENPTkZJR19DTURfUkVHSU5GTwpAQCAtNTIxLDggKzUzMiw4IEBACiAJIm1pc2NfYXJncz1pcD1vblwwIgkJCQkJCVwKIAkic2V0X2Jvb3RhcmdzPXNldGVudiBib290YXJncyAke2NvbnNvbGVfYXJnc30gJHtyb290X2FyZ3N9ICR7bWlzY19hcmdzfVwwIiBcCiAJImJvb3RmaWxlPS9ob21lL3VzZXIvZmlsZVwwIgkJCQkJXAotCSJvc2ZpbGU9L2hvbWUvdXNlci91SW1hZ2UtWFBlZGl0ZTUyMDBcMCIJCQlcCi0JImZkdGZpbGU9L2hvbWUvdXNlci94cGVkaXRlNTIwMC5kdGJcMCIJCQkJXAorCSJvc2ZpbGU9L2hvbWUvdXNlci9ib2FyZC51SW1hZ2VcMCIJCQkJXAorCSJmZHRmaWxlPS9ob21lL3VzZXIvYm9hcmQuZHRiXDAiCQkJCVwKIAkidWJvb3RmaWxlPS9ob21lL3VzZXIvdS1ib290LmJpblwwIgkJCQlcCiAJImZkdGFkZHI9YzAwMDAwXDAiCQkJCQkJXAogCSJvc2FkZHI9MHgxMDAwMDAwXDAiCQkJCQkJXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1hQRURJVEU1MzcwLmggYi9pbmNsdWRlL2NvbmZpZ3MveHBlZGl0ZTUzN3guaApzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBpbmNsdWRlL2NvbmZpZ3MvWFBFRElURTUzNzAuaApyZW5hbWUgdG8gaW5jbHVkZS9jb25maWdzL3hwZWRpdGU1Mzd4LmgKaW5kZXggNjI5ZGMwZC4uZTBhMWZhNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1hQRURJVEU1MzcwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3hwZWRpdGU1Mzd4LmgKQEAgLTIyLDcgKzIyLDcgQEAKICAqLwogCiAvKgotICogeHBlZGl0ZTUzNzAgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlCisgKiB4cGVkaXRlNTM3eCBib2FyZCBjb25maWd1cmF0aW9uIGZpbGUKICAqLwogI2lmbmRlZiBfX0NPTkZJR19ICiAjZGVmaW5lIF9fQ09ORklHX0gKQEAgLTM2LDYgKzM2LDcgQEAKICNkZWZpbmUgQ09ORklHX01QQzg1NzIJCTEKICNkZWZpbmUgQ09ORklHX1hQRURJVEU1MzcwCTEKICNkZWZpbmUgQ09ORklHX1NZU19CT0FSRF9OQU1FCSJYUGVkaXRlNTM3MCIKKyNkZWZpbmUgQ09ORklHX1NZU19GT1JNXzNVX1ZQWAkxCiAjZGVmaW5lIENPTkZJR19CT0FSRF9FQVJMWV9JTklUX1IJLyogQ2FsbCBib2FyZF9wcmVfaW5pdCAqLwogCiAjaWZuZGVmIENPTkZJR19TWVNfVEVYVF9CQVNFCkBAIC0xMTAsNiArMTExLDIwIEBACiAjZGVmaW5lIENPTkZJR19TWVNfQUxUX01FTVRFU1QKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCTB4MTAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJMHgyMDAwMDAwMAorI2RlZmluZSBDT05GSUdfUE9TVAkJCShDT05GSUdfU1lTX1BPU1RfTUVNT1JZIHwgXAorCQkJCQkgQ09ORklHX1NZU19QT1NUX0kyQykKKyNkZWZpbmUgSTJDX0FERFJfTElTVAkJCXtDT05GSUdfU1lTX0kyQ19EUzE2MjFfQUREUiwJXAorCQkJCQkgQ09ORklHX1NZU19JMkNfRFM0NTEwX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19MTTkwX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjAsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjEsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjMsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1BFWDg1MThfQUREUiwJXAorCQkJCQkgQ09ORklHX1NZU19JMkNfUlRDX0FERFJ9CisvKiBUaGUgWFBlZGl0ZTUzNzAgY2FuIGhvc3QgYW4gWE1DIHdoaWNoIGhhcyBhbiBFRVBST00gYXQgYWRkcmVzcyAweDUwICovCisjZGVmaW5lIEkyQ19BRERSX0lHTk9SRV9MSVNUCQl7MHg1MH0KIAogLyoKICAqIE1lbW9yeSBtYXAKQEAgLTIwOSwxMCArMjI0LDkgQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0xPQ0sJMQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJMHhlMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAkJMHgwMDAwNDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJCTB4MDAwMDQwMDAKIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CS8qIG51bSBieXRlcyBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9TUF9PRkZTRVQJQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQKIAogI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoNTEyICogMTAyNCkJLyogUmVzZXJ2ZSA1MTIgS0IgZm9yIE1vbiAqLwpAQCAtMjY1LDYgKzI3OSw3IEBACiAjZGVmaW5lIENPTkZJR19TWVNfSTJDX0RTMTYyMV9BRERSCTB4NDgKICNkZWZpbmUgQ09ORklHX0RUVF9EUzE2MjEKICNkZWZpbmUgQ09ORklHX0RUVF9TRU5TT1JTCQl7IDAgfQorI2RlZmluZSBDT05GSUdfU1lTX0kyQ19MTTkwX0FERFIJMHg0YwogCiAvKiBJMkMgRUVQUk9NIC0gQVQyNEMxMjhCICovCiAjZGVmaW5lIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSCQkweDU0CkBAIC0zMzQsMTggKzM0OSwxOCBAQAogICogTWVtb3J5IHNwYWNlIGlzIG1hcHBlZCAxLTEsIGJ1dCBJL08gc3BhY2UgbXVzdCBzdGFydCBmcm9tIDAuCiAgKi8KIC8qIFBDSUUxIC0gVlBYIFAxICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UJMHg4MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTCUNPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSUUxX01FTV9CVVMKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRQkweDQwMDAwMDAwCS8qIDFHICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQlVTCQkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fUEhZUwkweGU4MDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fU0laRQkweDAwODAwMDAwCS8qIDhNICovCiAKIC8qIFBDSUUyIC0gUEVYODUxOCAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFCTB4YzAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX0JVUwkweGMwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMJQ09ORklHX1NZU19QQ0lFMl9NRU1fQlVTCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1NJWkUJMHgxMDAwMDAwMAkvKiAyNTZNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fQlVTCQkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fUEhZUwkweGU4ODAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fU0laRQkweDAwODAwMDAwCS8qIDhNICovCiAKQEAgLTM5Niw2ICs0MTEsNyBAQAogI2RlZmluZSBDT05GSUdfQ01EX1BDQTk1M1gKICNkZWZpbmUgQ09ORklHX0NNRF9QQ0E5NTNYX0lORk8KICNkZWZpbmUgQ09ORklHX0NNRF9QQ0kKKyNkZWZpbmUgQ09ORklHX0NNRF9QQ0lfRU5VTQogI2RlZmluZSBDT05GSUdfQ01EX1BJTkcKICNkZWZpbmUgQ09ORklHX0NNRF9TQVZFRU5WCiAjZGVmaW5lIENPTkZJR19DTURfU05UUApAQCAtNTc4LDggKzU5NCw4IEBACiAJIm1pc2NfYXJncz1pcD1vblwwIgkJCQkJCVwKIAkic2V0X2Jvb3RhcmdzPXNldGVudiBib290YXJncyAke2NvbnNvbGVfYXJnc30gJHtyb290X2FyZ3N9ICR7bWlzY19hcmdzfVwwIiBcCiAJImJvb3RmaWxlPS9ob21lL3VzZXIvZmlsZVwwIgkJCQkJXAotCSJvc2ZpbGU9L2hvbWUvdXNlci91SW1hZ2UtWFBlZGl0ZTUzNzBcMCIJCQlcCi0JImZkdGZpbGU9L2hvbWUvdXNlci94cGVkaXRlNTM3MC5kdGJcMCIJCQkJXAorCSJvc2ZpbGU9L2hvbWUvdXNlci9ib2FyZC51SW1hZ2VcMCIJCQkJXAorCSJmZHRmaWxlPS9ob21lL3VzZXIvYm9hcmQuZHRiXDAiCQkJCVwKIAkidWJvb3RmaWxlPS9ob21lL3VzZXIvdS1ib290LmJpblwwIgkJCQlcCiAJImZkdGFkZHI9YzAwMDAwXDAiCQkJCQkJXAogCSJvc2FkZHI9MHgxMDAwMDAwXDAiCQkJCQkJXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1hQRURJVEU1MzcwLmggYi9pbmNsdWRlL2NvbmZpZ3MveHBlZGl0ZTU1MHguaApzaW1pbGFyaXR5IGluZGV4IDgwJQpjb3B5IGZyb20gaW5jbHVkZS9jb25maWdzL1hQRURJVEU1MzcwLmgKY29weSB0byBpbmNsdWRlL2NvbmZpZ3MveHBlZGl0ZTU1MHguaAppbmRleCA2MjlkYzBkLi40MmQxZjY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvWFBFRElURTUzNzAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MveHBlZGl0ZTU1MHguaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgMjAwOCBFeHRyZW1lIEVuZ2luZWVyaW5nIFNvbHV0aW9ucywgSW5jLgorICogQ29weXJpZ2h0IDIwMTAgRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMsIEluYy4KICAqIENvcHlyaWdodCAyMDA3LTIwMDggRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwpAQCAtOSw3ICs5LDYgQEAKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCiAgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgogICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlCkBAIC0yMiw3ICsyMSw3IEBACiAgKi8KIAogLyoKLSAqIHhwZWRpdGU1MzcwIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZQorICogeHBlZGl0ZTU1MHggYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlCiAgKi8KICNpZm5kZWYgX19DT05GSUdfSAogI2RlZmluZSBfX0NPTkZJR19ICkBAIC0zMyw5ICszMiwxMSBAQAogI2RlZmluZSBDT05GSUdfQk9PS0UJCTEJLyogQk9PS0UgKi8KICNkZWZpbmUgQ09ORklHX0U1MDAJCTEJLyogQk9PS0UgZTUwMCBmYW1pbHkgKi8KICNkZWZpbmUgQ09ORklHX01QQzg1eHgJCTEJLyogTVBDODU0MC82MC81NS80MS80OCAqLwotI2RlZmluZSBDT05GSUdfTVBDODU3MgkJMQotI2RlZmluZSBDT05GSUdfWFBFRElURTUzNzAJMQotI2RlZmluZSBDT05GSUdfU1lTX0JPQVJEX05BTUUJIlhQZWRpdGU1MzcwIgorI2RlZmluZSBDT05GSUdfUDIwMjAJCTEKKyNkZWZpbmUgQ09ORklHX1hQRURJVEU1NTBYCTEKKyNkZWZpbmUgQ09ORklHX1NZU19CT0FSRF9OQU1FCSJYUGVkaXRlNTUwMCIKKyNkZWZpbmUgQ09ORklHX1NZU19GT1JNX1BNQ19YTUMJMQorI2RlZmluZSBDT05GSUdfUFJQTUNfUENJX0FMSUFTCSJwY2kwIgkvKiBQcm9jZXNzb3IgUE1DIGludGVyZmFjZSBvbiBwY2kwICovCiAjZGVmaW5lIENPTkZJR19CT0FSRF9FQVJMWV9JTklUX1IJLyogQ2FsbCBib2FyZF9wcmVfaW5pdCAqLwogCiAjaWZuZGVmIENPTkZJR19TWVNfVEVYVF9CQVNFCkBAIC00NSw4ICs0Niw3IEBACiAjZGVmaW5lIENPTkZJR19QQ0kJCTEJLyogRW5hYmxlIFBDSS9QQ0lFICovCiAjZGVmaW5lIENPTkZJR19QQ0lfUE5QCQkxCS8qIGRvIHBjaSBwbHVnLWFuZC1wbGF5ICovCiAjZGVmaW5lIENPTkZJR19QQ0lfU0NBTl9TSE9XCTEJLyogc2hvdyBwY2kgZGV2aWNlcyBvbiBzdGFydHVwICovCi0jZGVmaW5lIENPTkZJR19QQ0lFMQkJMQkvKiBQQ0lFIGNvbnRyb2xlciAxICovCi0jZGVmaW5lIENPTkZJR19QQ0lFMgkJMQkvKiBQQ0lFIGNvbnRyb2xlciAyICovCisjZGVmaW5lIENPTkZJR19QQ0lFMQkJMQkvKiBQQ0lFIGNvbnRyb2xlciAxIChQRVg4MTEyIG9yIFhNQykgKi8KICNkZWZpbmUgQ09ORklHX0ZTTF9QQ0lfSU5JVAkxCS8qIFVzZSBjb21tb24gRlNMIGluaXQgY29kZSAqLwogI2RlZmluZSBDT05GSUdfU1lTX1BDSV82NEJJVAkxCS8qIGVuYWJsZSA2NC1iaXQgUENJIHJlc291cmNlcyAqLwogI2RlZmluZSBDT05GSUdfRlNMX1BDSUVfUkVTRVQJMQkvKiBuZWVkIFBDSWUgcmVzZXQgZXJyYXRhICovCkBAIC02MywxNyArNjMsMTUgQEAKIC8qCiAgKiBERFIgY29uZmlnCiAgKi8KLSNkZWZpbmUgQ09ORklHX0ZTTF9ERFIyCi0jdW5kZWYgQ09ORklHX0ZTTF9ERFJfSU5URVJBQ1RJVkUKKyNkZWZpbmUgQ09ORklHX0ZTTF9ERFIzCiAjZGVmaW5lIENPTkZJR19TUERfRUVQUk9NCQkvKiBVc2UgU1BEIEVFUFJPTSBmb3IgRERSIHNldHVwICovCiAjZGVmaW5lIENPTkZJR19ERFJfU1BECiAjZGVmaW5lIENPTkZJR19NRU1fSU5JVF9WQUxVRQkJMHhkZWFkYmVlZgotI2RlZmluZSBTUERfRUVQUk9NX0FERFJFU1MxCQkweDU0CS8qIEJvdGggY2hhbm5lbHMgdXNlIHRoZSAqLwotI2RlZmluZSBTUERfRUVQUk9NX0FERFJFU1MyCQkweDU0CS8qIHNhbWUgU1BEIGRhdGEgICAgICAgICAqLworI2RlZmluZSBTUERfRUVQUk9NX0FERFJFU1MxCQkJMHg1NAogI2RlZmluZSBTUERfRUVQUk9NX09GRlNFVAkJMHgyMDAJLyogT0ZGU0VUIG9mIFNQRCBpbiBFRVBST00gKi8KLSNkZWZpbmUgQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlMJMgorI2RlZmluZSBDT05GSUdfTlVNX0REUl9DT05UUk9MTEVSUwkxCiAjZGVmaW5lIENPTkZJR19ESU1NX1NMT1RTX1BFUl9DVExSCTEKLSNkZWZpbmUgQ09ORklHX0NISVBfU0VMRUNUU19QRVJfQ1RSTAkxCisjZGVmaW5lIENPTkZJR19DSElQX1NFTEVDVFNfUEVSX0NUUkwgMgogI2RlZmluZSBDT05GSUdfRERSX0VDQwogI2RlZmluZSBDT05GSUdfRUNDX0lOSVRfVklBX0REUkNPTlRST0xMRVIKICNkZWZpbmUgQ09ORklHX1NZU19ERFJfU0RSQU1fQkFTRQkweDAwMDAwMDAwIC8qIEREUiBpcyBzeXN0ZW0gbWVtb3J5Ki8KQEAgLTExMCwyMCArMTA4LDI3IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQUxUX01FTVRFU1QKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCTB4MTAwMDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX0VORAkJMHgyMDAwMDAwMAorI2RlZmluZSBDT05GSUdfUE9TVAkJCShDT05GSUdfU1lTX1BPU1RfTUVNT1JZIHwgXAorCQkJCQkgQ09ORklHX1NZU19QT1NUX0kyQykKKyNkZWZpbmUgSTJDX0FERFJfTElTVAkJCXtDT05GSUdfU1lTX0kyQ19FRVBST01fQUREUiwJXAorCQkJCQkgQ09ORklHX1NZU19JMkNfTE03NV9BRERSLAlcCisJCQkJCSBDT05GSUdfU1lTX0kyQ19MTTkwX0FERFIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjAsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjIsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUjMsCVwKKwkJCQkJIENPTkZJR19TWVNfSTJDX1JUQ19BRERSfQogCiAvKgogICogTWVtb3J5IG1hcAotICogMHgwMDAwXzAwMDAJMHg3ZmZmX2ZmZmYJRERSCQkJMkcgQ2FjaGVhYmxlCi0gKiAweDgwMDBfMDAwMAkweGJmZmZfZmZmZglQQ0llMSBNZW0JCTFHIG5vbi1jYWNoZWFibGUKLSAqIDB4YzAwMF8wMDAwCTB4Y2ZmZl9mZmZmCVBDSWUyIE1lbQkJMjU2TSBub24tY2FjaGVhYmxlCi0gKiAweGUwMDBfMDAwMAkweGU3ZmZfZmZmZglTUkFNL1NTUkFNL0wxIENhY2hlCTEyOE0gbm9uLWNhY2hlYWJsZQotICogMHhlODAwXzAwMDAJMHhlODdmX2ZmZmYJUENJZTEgSU8JCThNIG5vbi1jYWNoZWFibGUKLSAqIDB4ZTg4MF8wMDAwCTB4ZThmZl9mZmZmCVBDSWUyIElPCQk4TSBub24tY2FjaGVhYmxlCi0gKiAweGVlMDBfMDAwMAkweGVlMDBfZmZmZglCb290IHBhZ2UgdHJhbnNsYXRpb24JNEsgbm9uLWNhY2hlYWJsZQotICogMHhlZjAwXzAwMDAJMHhlZjBmX2ZmZmYJQ0NTUi9JTU1SCQkxTSBub24tY2FjaGVhYmxlCi0gKiAweGVmODBfMDAwMAkweGVmOGZfZmZmZglOQU5EIEZsYXNoCQkxTSBub24tY2FjaGVhYmxlCi0gKiAweGYwMDBfMDAwMAkweGY3ZmZfZmZmZglOT1IgRmxhc2ggMgkJMTI4TSBub24tY2FjaGVhYmxlCi0gKiAweGY4MDBfMDAwMAkweGZmZmZfZmZmZglOT1IgRmxhc2ggMQkJMTI4TSBub24tY2FjaGVhYmxlCisgKiAweDAwMDBfMDAwMCAweDdmZmZfZmZmZglERFIJCQkyRyBDYWNoZWFibGUKKyAqIDB4ODAwMF8wMDAwIDB4YmZmZl9mZmZmCVBDSWUxIE1lbQkJMUcgbm9uLWNhY2hlYWJsZQorICogMHhlMDAwXzAwMDAgMHhlN2ZmX2ZmZmYJU1JBTS9TU1JBTS9MMSBDYWNoZQkxMjhNIG5vbi1jYWNoZWFibGUKKyAqIDB4ZTgwMF8wMDAwIDB4ZTg3Zl9mZmZmCVBDSWUxIElPCQk4TSBub24tY2FjaGVhYmxlCisgKiAweGVlMDBfMDAwMCAweGVlMDBfZmZmZglCb290IHBhZ2UgdHJhbnNsYXRpb24JNEsgbm9uLWNhY2hlYWJsZQorICogMHhlZjAwXzAwMDAgMHhlZjBmX2ZmZmYJQ0NTUi9JTU1SCQkxTSBub24tY2FjaGVhYmxlCisgKiAweGVmODBfMDAwMCAweGVmOGZfZmZmZglOQU5EIEZsYXNoCQkxTSBub24tY2FjaGVhYmxlCisgKiAweGYwMDBfMDAwMCAweGY3ZmZfZmZmZglOT1IgRmxhc2ggMgkJMTI4TSBub24tY2FjaGVhYmxlCisgKiAweGY4MDBfMDAwMCAweGZmZmZfZmZmZglOT1IgRmxhc2ggMQkJMTI4TSBub24tY2FjaGVhYmxlCiAgKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX0xCQ19MQ1JSCShMQ1JSX0NMS0RJVl84IHwgTENSUl9FQURDXzMpCkBAIC0yMDksMTAgKzIxNCw5IEBACiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4ZTAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJCTB4MDAwMDQwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCQkweDAwMDA0MDAwCiAKLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCUNPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCiAKICNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0xFTgkJKDUxMiAqIDEwMjQpCS8qIFJlc2VydmUgNTEyIEtCIGZvciBNb24gKi8KQEAgLTI0Niw2ICsyNTAsNyBAQAogI2RlZmluZSBDT05GSUdfT0ZfTElCRkRUCQkxCiAjZGVmaW5lIENPTkZJR19PRl9CT0FSRF9TRVRVUAkJMQogI2RlZmluZSBDT05GSUdfT0ZfU1RET1VUX1ZJQV9BTElBUwkxCisjZGVmaW5lIENPTkZJR19GRFRfRklYVVBfUENJX0lSUQkxCiAKIC8qCiAgKiBJMkMKQEAgLTI1OCwxMyArMjYzLDEzIEBACiAjZGVmaW5lIENPTkZJR19TWVNfSTJDMl9PRkZTRVQJCTB4MzEwMAogI2RlZmluZSBDT05GSUdfSTJDX01VTFRJX0JVUwogCi0vKiBQRVg4NTE4IHNsYXZlIEkyQyBpbnRlcmZhY2UgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JMkNfUEVYODUxOF9BRERSCTB4NzAKLQotLyogSTJDIERTMTYzMSB0ZW1wZXJhdHVyZSBzZW5zb3IgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JMkNfRFMxNjIxX0FERFIJMHg0OAotI2RlZmluZSBDT05GSUdfRFRUX0RTMTYyMQorLyogSTJDIERTNzUwNSB0ZW1wZXJhdHVyZSBzZW5zb3IgKi8KKyNkZWZpbmUgQ09ORklHX0RUVF9MTTc1CiAjZGVmaW5lIENPTkZJR19EVFRfU0VOU09SUwkJeyAwIH0KKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfTE03NV9BRERSCTB4NDgKKworLyogSTJDIEFEVDc0NjEgdGVtcGVyYXR1cmUgc2Vuc29yICovCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX0xNOTBfQUREUgkweDRDCiAKIC8qIEkyQyBFRVBST00gLSBBVDI0QzEyOEIgKi8KICNkZWZpbmUgQ09ORklHX1NZU19JMkNfRUVQUk9NX0FERFIJCTB4NTQKQEAgLTI3NywxMCArMjgyLDYgQEAKICNkZWZpbmUgQ09ORklHX1NZU19JMkNfUlRDX0FERFIJCTB4NjgKICNkZWZpbmUgQ09ORklHX1NZU19NNDFUMTFfQkFTRV9ZRUFSCTIwMDAKIAotLyogR1BJTy9FRVBST00vU1JBTSAqLwotI2RlZmluZSBDT05GSUdfRFM0NTEwCi0jZGVmaW5lIENPTkZJR19TWVNfSTJDX0RTNDUxMF9BRERSCTB4NTEKLQogLyogR1BJTyAqLwogI2RlZmluZSBDT05GSUdfUENBOTUzWAogI2RlZmluZSBDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIwCTB4MTgKQEAgLTI5MCw2NCArMjkxLDQ4IEBACiAjZGVmaW5lIENPTkZJR19TWVNfSTJDX1BDQTk1M1hfQUREUglDT05GSUdfU1lTX0kyQ19QQ0E5NTNYX0FERFIwCiAKIC8qCi0gKiBQVSA9IHB1bGxlZCBoaWdoLCBQRCA9IHB1bGxlZCBsb3cKLSAqIEkgPSBpbnB1dCwgTyA9IG91dHB1dCwgSU8gPSBpbnB1dC9vdXRwdXQKKyAqIEdQSU8gcGluIGRlZmluaXRpb25zLCBQVSA9IHB1bGxlZCBoaWdoLCBQRCA9IHB1bGxlZCBsb3cKICAqLwogLyogUENBOTU1NyBAIDB4MTgqLwogI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfQzBfU0VSMF9FTgkJMHgwMSAvKiBQVTsgVUFSVDAgZW5hYmxlICgxOiBlbmFibGVkKSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfQzBfU0VSMF9NT0RFCQkweDAyIC8qIFBVOyBVQVJUMCBzZXJpYWwgbW9kZSBzZWxlY3QgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX0MwX1NFUjBfTU9ERQkJMHgwMiAvKiBQVTsgVUFSVDAgc2VyaWFsIG1vZGUgc2VsZWN0ICgxOiBSUy00ODUsIDA6IFJTLTIzMikgKi8KICNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX0MwX1NFUjFfRU4JCTB4MDQgLyogUFU7IFVBUlQxIGVuYWJsZSAoMTogZW5hYmxlZCkgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX0MwX1NFUjFfTU9ERQkJMHgwOCAvKiBQVTsgVUFSVDEgc2VyaWFsIG1vZGUgc2VsZWN0ICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9DMF9TRVIxX01PREUJCTB4MDggLyogUFU7IFVBUlQxIHNlcmlhbCBtb2RlIHNlbGVjdCAoMTogUlMtNDg1LCAwOiBSUy0yMzIpICovCiAjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9DMF9GTEFTSF9QQVNTX0NTCTB4MTAgLyogUFU7IEJvb3QgZmxhc2ggQ1Mgc2VsZWN0ICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9OVk1fV1AJCTB4MjAgLyogUFU7IFNldCB0byAwIHRvIGVuYWJsZSBOVk0gd3JpdGluZyAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfQzBfVkNPUkVfVklEMgkweDQwIC8qIFZJRDIgb2YgSVNMNjI2MiAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfQzBfVkNPUkVfVklEMwkweDgwIC8qIFZJRDMgb2YgSVNMNjI2MiAqLwotCi0vKiBQQ0E5NTU3IEAgMHgxYyovCi0jZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9YTUMwX1JPT1QwCQkweDAxIC8qIFBVOyBMb3cgaWYgWE1DIGlzIFJDICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9YTUMwX01WTVIwCQkweDAyIC8qIFhNQyBFRVBST00gd3JpdGUgcHJvdGVjdCAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfWE1DMF9XQUtFCQkweDA0IC8qIFBVOyBYTUMgd2FrZSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfWE1DMF9CSVNUCQkweDA4IC8qIFBVOyBYTUMgYnVpbHQgaW4gc2VsZiB0ZXN0ICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9YTUNfUFJFU0VOVAkJMHgxMCAvKiBQVTsgTG93IGlmIFhNQyBtb2R1bGUgaW5zdGFsbGVkICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9QTUNfUFJFU0VOVAkJMHgyMCAvKiBQVTsgTG93IGlmIFBNQyBtb2R1bGUgaW5zdGFsbGVkICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9QTUMwX01PTkFSQ0gJCTB4NDAgLyogUE1DIG1vbmFyY2ggbW9kZSBlbmFibGUgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1BNQzBfRVJFQURZCQkweDgwIC8qIFBVOyBQTUMgUENJIGVyZWFkeSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfTlZNX1dQCQkweDIwIC8qIFBVOyBXcml0ZSBwcm90ZWN0aW9uICgwOiBkaXNhYmxlZCwgMTogZW5hYmxlZCkgKi8KIAogLyogUENBOTU1NyBAIDB4MWUqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfUDBfR0EwCQkweDAxIC8qIFBVOyBWUFggR2VvZ3JhcGhpY2FsIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1AwX0dBMQkJMHgwMiAvKiBQVTsgVlBYIEdlb2dyYXBoaWNhbCBhZGRyZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9QMF9HQTIJCTB4MDQgLyogUFU7IFZQWCBHZW9ncmFwaGljYWwgYWRkcmVzcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfUDBfR0EzCQkweDA4IC8qIFBVOyBWUFggR2VvZ3JhcGhpY2FsIGFkZHJlc3MgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1AwX0dBNAkJMHgxMCAvKiBQVTsgVlBYIEdlb2dyYXBoaWNhbCBhZGRyZXNzICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9QMF9HQVAJCTB4MjAgLyogUFU7IHRpZWQgdG8gVlBYIFAwLkdBUCAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfUDFfU1lTRU4JCTB4ODAgLyogUFU7IFB1bGxlZCBoaWdoOyB0aWVkIHRvIFZQWCBQMS5TWVNDT04gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1hNQ19HQTAJCTB4MDEgLyogUFU7ICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9YTUNfR0ExCQkweDAyIC8qIFBVOyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfWE1DX0dBMgkJMHgwNCAvKiBQVTsgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX1hNQ19XQUtFCQkweDEwIC8qIFBVOyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfWE1DX0JJU1QJCTB4MjAgLyogRW5hYmxlIFhNQyBCSVNUICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9QTUNfRVJFQURZCQkweDQwIC8qIFBVOyBQTUMgUENJIGVyZWFkeSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfUE1DX01PTkFSQ0gJCTB4ODAgLyogUE1DIG1vbmFyY2ggbW9kZSBlbmFibGUgKi8KIAogLyogUENBOTU1NyBAIDB4MWYgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX0dQSU9fVlBYMAkJMHgwMSAvKiBQVSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfR1BJT19WUFgxCQkweDAyIC8qIFBVICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9HUElPX1ZQWDIJCTB4MDQgLyogUFUgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX0dQSU9fVlBYMwkJMHgwOCAvKiBQVSAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfVlBYX0ZSVV9XUkNUTAkweDEwIC8qIFBEOyBJMkMgbWFzdGVyIHNvdXJjZSBmb3IgRlJVIFNFRVBST00gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX01DX0dQSU8wCQkweDAxIC8qIFBVOyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfTUNfR1BJTzEJCTB4MDIgLyogUFU7ICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9NQ19HUElPMgkJMHgwNCAvKiBQVTsgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX01DX0dQSU8zCQkweDA4IC8qIFBVOyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfTUNfR1BJTzQJCTB4MTAgLyogUFU7ICovCisjZGVmaW5lIENPTkZJR19TWVNfUENBOTUzWF9NQ19HUElPNQkJMHgyMCAvKiBQVTsgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0E5NTNYX01DX0dQSU82CQkweDQwIC8qIFBVOyAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDQTk1M1hfTUNfR1BJTzcJCTB4ODAgLyogUFU7ICovCiAKIC8qCiAgKiBHZW5lcmFsIFBDSQogICogTWVtb3J5IHNwYWNlIGlzIG1hcHBlZCAxLTEsIGJ1dCBJL08gc3BhY2UgbXVzdCBzdGFydCBmcm9tIDAuCiAgKi8KLS8qIFBDSUUxIC0gVlBYIFAxICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UJMHg4MDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTCUNPTkZJR19TWVNfUENJRTFfTUVNX0JBU0UKKworLyogY29udHJvbGxlciAxIC0gUEVYODExMiBvciBYTUMsIGRlcGVuZGluZyBvbiBidWlsZCBvcHRpb24gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSUUxX01FTV9CVVMKICNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRQkweDQwMDAwMDAwCS8qIDFHICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fQlVTCQkweDAwMDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fUEhZUwkweGU4MDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fU0laRQkweDAwODAwMDAwCS8qIDhNICovCiAKLS8qIFBDSUUyIC0gUEVYODUxOCAqLwotI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFCTB4YzAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUwlDT05GSUdfU1lTX1BDSUUyX01FTV9CQVNFCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1NJWkUJMHgxMDAwMDAwMAkvKiAyNTZNICovCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fQkFTRQkweDAwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fUEhZUwkweGU4ODAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fU0laRQkweDAwODAwMDAwCS8qIDhNICovCiAKIC8qCiAgKiBOZXR3b3JraW5nIG9wdGlvbnMKQEAgLTM3NCw2ICszNTksMjIgQEAKICNkZWZpbmUgVFNFQzJfUEhZSURYCQkwCiAjZGVmaW5lIENPTkZJR19IQVNfRVRIMQogCisjZGVmaW5lIENPTkZJR19UU0VDMwkJMQorI2RlZmluZSBDT05GSUdfVFNFQzNfTkFNRQkiZVRTRUMzIgorI2RlZmluZSBUU0VDM19GTEFHUwkJKFRTRUNfR0lHQUJJVCB8IFRTRUNfUkVEVUNFRCkKKyNkZWZpbmUgVFNFQzNfUEhZX0FERFIJCTMKKyNkZWZpbmUgVFNFQzNfUEhZSURYCQkwCisjZGVmaW5lIENPTkZJR19IQVNfRVRIMgorCisvKgorICogVVNCCisgKi8KKyNkZWZpbmUgQ09ORklHX1VTQl9TVE9SQUdFCisjZGVmaW5lIENPTkZJR19VU0JfRUhDSQorI2RlZmluZSBDT05GSUdfVVNCX0VIQ0lfRlNMCisjZGVmaW5lIENPTkZJR19FSENJX0hDRF9JTklUX0FGVEVSX1JFU0VUCisjZGVmaW5lIENPTkZJR19ET1NfUEFSVElUSU9OCisKIC8qCiAgKiBDb21tYW5kIGNvbmZpZ3VyYXRpb24uCiAgKi8KQEAgLTM4Miw4ICszODMsNiBAQAogI2RlZmluZSBDT05GSUdfQ01EX0FTS0VOVgogI2RlZmluZSBDT05GSUdfQ01EX0RBVEUKICNkZWZpbmUgQ09ORklHX0NNRF9ESENQCi0jZGVmaW5lIENPTkZJR19DTURfRFM0NTEwCi0jZGVmaW5lIENPTkZJR19DTURfRFM0NTEwX0lORk8KICNkZWZpbmUgQ09ORklHX0NNRF9EVFQKICNkZWZpbmUgQ09ORklHX0NNRF9FRVBST00KICNkZWZpbmUgQ09ORklHX0NNRF9FTEYKQEAgLTM5NiwxMCArMzk1LDEyIEBACiAjZGVmaW5lIENPTkZJR19DTURfUENBOTUzWAogI2RlZmluZSBDT05GSUdfQ01EX1BDQTk1M1hfSU5GTwogI2RlZmluZSBDT05GSUdfQ01EX1BDSQorI2RlZmluZSBDT05GSUdfQ01EX1BDSV9FTlVNCiAjZGVmaW5lIENPTkZJR19DTURfUElORworI2RlZmluZSBDT05GSUdfQ01EX1JFR0lORk8KICNkZWZpbmUgQ09ORklHX0NNRF9TQVZFRU5WCiAjZGVmaW5lIENPTkZJR19DTURfU05UUAotI2RlZmluZSBDT05GSUdfQ01EX1JFR0lORk8KKyNkZWZpbmUgQ09ORklHX0NNRF9VU0IKIAogLyoKICAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKQEAgLTQzMSw2ICs0MzIsMTIgQEAKICNkZWZpbmUgQ09ORklHX1NZU19CT09UTV9MRU4JKDE2IDw8IDIwKQkvKiBJbmNyZWFzZSBtYXggZ3VuemlwIHNpemUgKi8KIAogLyoKKyAqIEJvb3QgRmxhZ3MKKyAqLworI2RlZmluZSBCT09URkxBR19DT0xECQkweDAxCQkvKiBOb3JtYWwgUG93ZXItT246IEJvb3QgZnJvbSBGTEFTSCAqLworI2RlZmluZSBCT09URkxBR19XQVJNCQkweDAyCQkvKiBTb2Z0d2FyZSByZWJvb3QgKi8KKworLyoKICAqIEVudmlyb25tZW50IENvbmZpZ3VyYXRpb24KICAqLwogI2RlZmluZSBDT05GSUdfRU5WX0lTX0lOX0ZMQVNICTEKQEAgLTU3MCw3ICs1NzcsNyBAQAogCQkiZWNobyBGRFQgRE9XTkxPQUQgRkFJTEVEOyAiCQkJCVwKIAkiZmk7IgogCi0jZGVmaW5lCUNPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCQkJCVwKKyNkZWZpbmUgQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUwkJCQkJXAogCSJhdXRvbG9hZD15ZXNcMCIJCQkJCQlcCiAJImRvd25sb2FkX2NtZD10ZnRwXDAiCQkJCQkJXAogCSJjb25zb2xlX2FyZ3M9Y29uc29sZT10dHlTMCwxMTUyMDBcMCIJCQkJXApAQCAtNTc4LDggKzU4NSw4IEBACiAJIm1pc2NfYXJncz1pcD1vblwwIgkJCQkJCVwKIAkic2V0X2Jvb3RhcmdzPXNldGVudiBib290YXJncyAke2NvbnNvbGVfYXJnc30gJHtyb290X2FyZ3N9ICR7bWlzY19hcmdzfVwwIiBcCiAJImJvb3RmaWxlPS9ob21lL3VzZXIvZmlsZVwwIgkJCQkJXAotCSJvc2ZpbGU9L2hvbWUvdXNlci91SW1hZ2UtWFBlZGl0ZTUzNzBcMCIJCQlcCi0JImZkdGZpbGU9L2hvbWUvdXNlci94cGVkaXRlNTM3MC5kdGJcMCIJCQkJXAorCSJvc2ZpbGU9L2hvbWUvdXNlci9ib2FyZC51SW1hZ2VcMCIJCQkJXAorCSJmZHRmaWxlPS9ob21lL3VzZXIvYm9hcmQuZHRiXDAiCQkJCVwKIAkidWJvb3RmaWxlPS9ob21lL3VzZXIvdS1ib290LmJpblwwIgkJCQlcCiAJImZkdGFkZHI9YzAwMDAwXDAiCQkJCQkJXAogCSJvc2FkZHI9MHgxMDAwMDAwXDAiCQkJCQkJXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3hzZW5naW5lLmggYi9pbmNsdWRlL2NvbmZpZ3MveHNlbmdpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYwNmI1My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MveHNlbmdpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi0vKgotICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBLeWxlIEhhcnJpcywgTmV4dXMgVGVjaG5vbG9naWVzLCBJbmMuIGtoYXJyaXNAbmV4dXMtdGVjaC5uZXQKLSAqCi0gKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIFN5c2dvIFJlYWwtVGltZSBTb2x1dGlvbnMsIEdtYkggPHd3dy5lbGlub3MuY29tPgotICogTWFyaXVzIEdyb2VnZXIgPG1ncm9lZ2VyQHN5c2dvLmRlPgotICoKLSAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCi0gKiBwcm9qZWN0LgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCi0gKiBNQSAwMjExMS0xMzA3IFVTQQotICovCi0KLSNpZm5kZWYgX19DT05GSUdfSAotI2RlZmluZSBfX0NPTkZJR19ICi0KLS8qIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zICovCi0jZGVmaW5lIENPTkZJR19QWEEyNTAJCQkxCQkvKiBUaGlzIGlzIGFuIFBYQTI1MCBDUFUgICAgKi8KLSNkZWZpbmUgQ09ORklHX1hTRU5HSU5FCQkJMQotI2RlZmluZSBDT05GSUdfTU1DCQkJMQotI2RlZmluZSBDT05GSUdfRE9TX1BBUlRJVElPTgkJMQotI2RlZmluZSBCT0FSRF9MQVRFX0lOSVQJCQkxCi0jdW5kZWYgIENPTkZJR19VU0VfSVJRCQkJCQkvKiB3ZSBkb24ndCBuZWVkIElSUS9GSVEgc3R1ZmYgKi8KLS8qIHdlIHdpbGwgbmV2ZXIgZW5hYmxlIGRjYWNoZSwgYmVjYXVzZSB3ZSBoYXZlIHRvIHNldHVwIE1NVSBmaXJzdCAqLwotI2RlZmluZSBDT05GSUdfU1lTX05PX0RDQUNIRQotCi0jZGVmaW5lIENPTkZJR19TWVNfSFoJCQkxMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfQ1BVU1BFRUQJCQkweDE2MSAgICAgICAgICAgLyogc2V0IGNvcmUgY2xvY2sgdG8gNDAwLzIwMC8xMDAgTUh6ICovCi0KLSNkZWZpbmUgQ09ORklHX05SX0RSQU1fQkFOS1MJCTEJCS8qIHdlIGhhdmUgMSBiYW5rIG9mIERSQU0gKi8KLSNkZWZpbmUgUEhZU19TRFJBTV8xCQkJMHhhMDAwMDAwMAkvKiBTRFJBTSBCYW5rICMxICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fMV9TSVpFCQkweDA0MDAwMDAwCS8qIDY0IE1CICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fMgkJCTB4YTQwMDAwMDAJLyogU0RSQU0gQmFuayAjMiAqLwotI2RlZmluZSBQSFlTX1NEUkFNXzJfU0laRQkJMHgwMDAwMDAwMAkvKiAwIE1CICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fMwkJCTB4YTgwMDAwMDAJLyogU0RSQU0gQmFuayAjMyAqLwotI2RlZmluZSBQSFlTX1NEUkFNXzNfU0laRQkJMHgwMDAwMDAwMAkvKiAwIE1CICovCi0jZGVmaW5lIFBIWVNfU0RSQU1fNAkJCTB4YWMwMDAwMDAJLyogU0RSQU0gQmFuayAjNCAqLwotI2RlZmluZSBQSFlTX1NEUkFNXzRfU0laRQkJMHgwMDAwMDAwMAkvKiAwIE1CICovCi0jZGVmaW5lIENPTkZJR19TWVNfRFJBTV9CQVNFCQkJMHhhMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0RSQU1fU0laRQkJCTB4MDQwMDAwMDAKLQotI2RlZmluZSBDT05GSUdfU1lTX1NEUkFNX0JBU0UJCVBIWVNfU0RSQU1fMQotI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSArIFBIWVNfU0RSQU1fMSkKLQotLyogRkxBU0ggb3JnYW5pemF0aW9uICovCi0jZGVmaW5lIENPTkZJR19TWVNfTUFYX0ZMQVNIX0JBTktTCQkxCQkvKiBtYXggbnVtYmVyIG9mIG1lbW9yeSBiYW5rcyAgICAgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfU0VDVAkJMTI4CQkvKiBtYXggbnVtYmVyIG9mIHNlY3RvcnMgb24gb25lIGNoaXAgICAgKi8KLSNkZWZpbmUgUEhZU19GTEFTSF8xCQkJMHgwMDAwMDAwMAkvKiBGbGFzaCBCYW5rICMxICovCi0jZGVmaW5lIFBIWVNfRkxBU0hfMgkJCTB4MDAwMDAwMDAJLyogRmxhc2ggQmFuayAjMiAqLwotI2RlZmluZSBQSFlTX0ZMQVNIX1NFQ1RfU0laRQkJMHgwMDAyMDAwMAkvKiAxMjcgS0Igc2VjdG9ycyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBU0UJCQlQSFlTX0ZMQVNIXzEKLQotLyoKLSAqIEpGRlMyIHBhcnRpdGlvbnMKLSAqLwotLyogTm8gY29tbWFuZCBsaW5lLCBvbmUgc3RhdGljIHBhcnRpdGlvbiwgd2hvbGUgZGV2aWNlICovCi0jdW5kZWYgQ09ORklHX0NNRF9NVERQQVJUUwotI2RlZmluZSBDT05GSUdfSkZGUzJfREVWCQkibm9yMCIKLSNkZWZpbmUgQ09ORklHX0pGRlMyX1BBUlRfU0laRQkJMHhGRkZGRkZGRgotI2RlZmluZSBDT05GSUdfSkZGUzJfUEFSVF9PRkZTRVQJMHgwMDAwMDAwMAotCi0vKiBtdGRwYXJ0cyBjb21tYW5kIGxpbmUgc3VwcG9ydCAqLwotLyogTm90ZTogZmFrZSBtdGRfaWQgdXNlZCwgbm8gbGludXggbXRkIG1hcCBmaWxlICovCi0vKgotI2RlZmluZSBDT05GSUdfQ01EX01URFBBUlRTCi0jZGVmaW5lIE1URElEU19ERUZBVUxUCQkibm9yMD14c2VuZ2luZS0wIgotI2RlZmluZSBNVERQQVJUU19ERUZBVUxUCSJtdGRwYXJ0cz14c2VuZ2luZS0wOjI1NmsodWJvb3QpLDFtKGtlcm5lbDEpLDhtKGtlcm5lbDIpIgotKi8KLQotLyogRW52aXJvbm1lbnQgc2V0dGluZ3MgKi8KLSNkZWZpbmUgQ09ORklHX0VOVl9PVkVSV1JJVEUKLSNkZWZpbmUgQ09ORklHX0VOVl9JU19JTl9GTEFTSCAgICAgICAgICAgICAxCi0jZGVmaW5lIENPTkZJR19FTlZfQUREUiAgICAgICAgICAgICAgICAgICAgKFBIWVNfRkxBU0hfMSArIDB4NDAwMDApCS8qIEFkZHIgb2YgRW52aXJvbm1lbnQgU2VjdG9yIChhZnRlciBtb25pdG9yKSovCi0jZGVmaW5lIENPTkZJR19FTlZfU0VDVF9TSVpFICAgICAgICAgICAgICAgUEhZU19GTEFTSF9TRUNUX1NJWkUJCS8qIFNpemUgb2YgdGhlIEVudmlyb25tZW50IFNlY3RvciAqLwotI2RlZmluZSBDT05GSUdfRU5WX1NJWkUgICAgICAgICAgICAgICAgICAgIDB4NDAwMAkJCQkvKiAxNmtCIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgU2VjdG9yICovCi0KLS8qIHRpbWVvdXQgdmFsdWVzIGFyZSBpbiB0aWNrcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0VSQVNFX1RPVVQJCSg3NSpDT05GSUdfU1lTX0haKQkvKiBUaW1lb3V0IGZvciBGbGFzaCBFcmFzZSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX1dSSVRFX1RPVVQJCSg1MCpDT05GSUdfU1lTX0haKQkvKiBUaW1lb3V0IGZvciBGbGFzaCBXcml0ZSAqLwotCi0vKiBTaXplIG9mIG1hbGxvYygpIHBvb2wgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkJKENPTkZJR19FTlZfU0laRSArIDI1NioxMDI0KQotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJCTEyOAkJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCi0KLS8qIEhhcmR3YXJlIGRyaXZlcnMgKi8KLSNkZWZpbmUgQ09ORklHX05FVF9NVUxUSQotI2RlZmluZSBDT05GSUdfU01DOTExMTEKLSNkZWZpbmUgQ09ORklHX1NNQzkxMTExX0JBU0UJCTB4MDQwMDAzMDAKLSNkZWZpbmUgQ09ORklHX1NNQ19VU0VfMzJfQklUCQkxCi0KLS8qIHNlbGVjdCBzZXJpYWwgY29uc29sZSBjb25maWd1cmF0aW9uICovCi0jZGVmaW5lIENPTkZJR19QWEFfU0VSSUFMCi0jZGVmaW5lIENPTkZJR19GRlVBUlQJCQkxCi0KLS8qIGFsbG93IHRvIG92ZXJ3cml0ZSBzZXJpYWwgYW5kIGV0aGFkZHIgKi8KLSNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkJMTE1MjAwCi0KLS8qCi0gKiBCT09UUCBvcHRpb25zCi0gKi8KLSNkZWZpbmUgQ09ORklHX0JPT1RQX0JPT1RGSUxFU0laRQotI2RlZmluZSBDT05GSUdfQk9PVFBfQk9PVFBBVEgKLSNkZWZpbmUgQ09ORklHX0JPT1RQX0dBVEVXQVkKLSNkZWZpbmUgQ09ORklHX0JPT1RQX0hPU1ROQU1FCi0KLQotLyoKLSAqIENvbW1hbmQgbGluZSBjb25maWd1cmF0aW9uLgotICovCi0jaW5jbHVkZSA8Y29uZmlnX2NtZF9kZWZhdWx0Lmg+Ci0KLSNkZWZpbmUgQ09ORklHX0NNRF9GQVQKLSNkZWZpbmUgQ09ORklHX0NNRF9QSU5HCi0jZGVmaW5lIENPTkZJR19DTURfSkZGUzIKLQotCi0jZGVmaW5lIENPTkZJR19CT09UREVMQVkJCTMKLSNkZWZpbmUgQ09ORklHX0VUSEFERFIJCQlGRjpGRjpGRjpGRjpGRjpGRgotI2RlZmluZSBDT05GSUdfTkVUTUFTSwkJCTI1NS4yNTUuMjU1LjAKLSNkZWZpbmUgQ09ORklHX0lQQUREUgkJCTE5Mi4xNjguMS41MAotI2RlZmluZSBDT05GSUdfU0VSVkVSSVAJCQkxOTIuMTY4LjEuMgotI2RlZmluZSBDT05GSUdfQk9PVEFSR1MJCQkicm9vdD0vZGV2L210ZGJsb2NrMiByb290ZnN0eXBlPWpmZnMyIGNvbnNvbGU9dHR5UzEsMTE1MjAwIgotI2RlZmluZSBDT05GSUdfQ01ETElORV9UQUcKLQotLyogTWlzY2VsbGFuZW91cyBjb25maWd1cmFibGUgb3B0aW9ucyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0hVU0hfUEFSU0VSCQkJMQotI2RlZmluZSBDT05GSUdfU1lTX1BST01QVF9IVVNIX1BTMgkJIj4gIgotI2RlZmluZSBDT05GSUdfU1lTX0xPTkdIRUxQCQkJCQkJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkqLwotI2RlZmluZSBDT05GSUdfU1lTX1BST01QVAkJCSJYUy1FbmdpbmUgdS1ib290PiAiCQkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAqLwotI2RlZmluZSBDT05GSUdfU1lTX0NCU0laRQkJCTI1NgkJCQkJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19QQlNJWkUJCQkoQ09ORklHX1NZU19DQlNJWkUrc2l6ZW9mKENPTkZJR19TWVNfUFJPTVBUKSsxNikJLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19NQVhBUkdTCQkJMTYJCQkJCS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzICovCi0jZGVmaW5lIENPTkZJR19TWVNfQkFSR1NJWkUJCQlDT05GSUdfU1lTX0NCU0laRQkJCQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplICovCi0jZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9TVEFSVAkJMHhBMDQwMDAwMAkJCQkvKiBtZW10ZXN0IHdvcmtzIG9uICAgICAqLwotI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkJMHhBMDgwMDAwMAkJCQkvKiA0IC4uLiA4IE1CIGluIERSQU0gICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0JBVURSQVRFX1RBQkxFCQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCB9CS8qIHZhbGlkIGJhdWRyYXRlcyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUgkJCTB4QTAwMDAwMDAJCQkJLyogbG9hZCBrZXJuZWwgdG8gdGhpcyBhZGRyZXNzICAgKi8KLQotI2lmZGVmIENPTkZJR19NTUMKLSNkZWZpbmUgQ09ORklHX1BYQV9NTUMKLSNkZWZpbmUgQ09ORklHX0NNRF9NTUMKLSNkZWZpbmUgQ09ORklHX1NZU19NTUNfQkFTRQkJCTB4RjAwMDAwMDAKLSNlbmRpZgotCi0vKiBTdGFjayBzaXplcyAtIFRoZSBzdGFjayBzaXplcyBhcmUgc2V0IHVwIGluIHN0YXJ0LlMgdXNpbmcgdGhlIHNldHRpbmdzIGJlbG93ICovCi0jZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJCSgxMjgqMTAyNCkJLyogcmVndWxhciBzdGFjayAqLwotI2lmZGVmICBDT05GSUdfVVNFX0lSUQotI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFX0lSUQkJKDQqMTAyNCkJLyogSVJRIHN0YWNrICovCi0jZGVmaW5lIENPTkZJR19TVEFDS1NJWkVfRklRCQkoNCoxMDI0KQkvKiBGSVEgc3RhY2sgKi8KLSNlbmRpZgotCi0vKiBHUCBzZXQgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HUFNSMF9WQUwJCQkweDAwMDBBMDAwCS8qIENTMSwgUFJPRyhGUEdBKSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dQU1IxX1ZBTAkJCTB4MDAwMjAwMDAJLyogblBXRSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dQU1IyX1ZBTAkJCTB4MDAwMEMwMDAJLyogQ1MyLCBDUzMgKi8KLQotLyogR1AgY2xlYXIgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HUENSMF9WQUwJCQkweDAwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfR1BDUjFfVkFMCQkJMHgwMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dQQ1IyX1ZBTAkJCTB4MDAwMDAwMDAKLQotLyogR1AgZGlyZWN0aW9uIHJlZ2lzdGVyICovCi0jZGVmaW5lIENPTkZJR19TWVNfR1BEUjBfVkFMCQkJMHgwMDAwQTAwMAkvKiBDUzEsIFBST0coRlBHQSkgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HUERSMV9WQUwJCQkweDAwMDIyQTgwCS8qIG5QV0UsIEZGVUFSVCArIEJUVUFSVCBwaW5zICovCi0jZGVmaW5lIENPTkZJR19TWVNfR1BEUjJfVkFMCQkJMHgwMDAwQzAwMAkvKiBDUzIsIENTMyAqLwotCi0vKiBHUCByaXNpbmcgZWRnZSBkZXRlY3QgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HUkVSMF9WQUwJCQkweDAwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfR1JFUjFfVkFMCQkJMHgwMDAwMDAwMAotI2RlZmluZSBDT05GSUdfU1lTX0dSRVIyX1ZBTAkJCTB4MDAwMDAwMDAKLQotLyogR1AgZmFsbGluZyBlZGdlIGRldGVjdCByZWdpc3RlciAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dGRVIwX1ZBTAkJCTB4MDAwMDAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19HRkVSMV9WQUwJCQkweDAwMDAwMDAwCi0jZGVmaW5lIENPTkZJR19TWVNfR0ZFUjJfVkFMCQkJMHgwMDAwMDAwMAotCi0vKiBHUCBhbHRlcm5hdGUgZnVuY3Rpb24gcmVnaXN0ZXIgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQUZSMF9MX1ZBTAkJCTB4ODAwMDAwMDAJLyogQ1MxICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0FGUjBfVV9WQUwJCQkweDAwMDAwMDEwCS8qIFJEWSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dBRlIxX0xfVkFMCQkJMHgwOTk4ODA1MAkvKiBGRlVBUlQgKyBCVFVBUlQgcGlucyAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dBRlIxX1VfVkFMCQkJMHgwMDAwMDAwOAkvKiBuUFdFICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0FGUjJfTF9WQUwJCQkweEEwMDAwMDAwCS8qIENTMiwgQ1MzICovCi0jZGVmaW5lIENPTkZJR19TWVNfR0FGUjJfVV9WQUwJCQkweDAwMDAwMDAwCi0KLSNkZWZpbmUgQ09ORklHX1NZU19QU1NSX1ZBTAkJCTB4MDAwMDAwMjAJLyogUG93ZXIgbWFuYWdlciBzbGVlcCBzdGF0dXMgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19DQ0NSX1ZBTAkJCTB4MDAwMDAxNjEJLyogMTAwIE1IeiBtZW1vcnksIDQwMCBNSHogQ1BVICAqLwotI2RlZmluZSBDT05GSUdfU1lTX0NLRU5fVkFMCQkJMHgwMDAwMDBDMAkvKiBCVFVBUlQgYW5kIEZGVUFSVCBlbmFibGVkICAgICovCi0jZGVmaW5lIENPTkZJR19TWVNfSUNNUl9WQUwJCQkweDAwMDAwMDAwCS8qIE5vIGludGVycnVwdHMgZW5hYmxlZCAgICAgICAgKi8KLQotLyogTWVtb3J5IHNldHRpbmdzICovCi0jZGVmaW5lIENPTkZJR19TWVNfTVNDMF9WQUwJCQkweDI1RjQyNUYwCi0KLS8qIE1EQ05GRzogU0RSQU0gQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLwotI2RlZmluZSBDT05GSUdfU1lTX01EQ05GR19WQUwJCQkweDAwMDAwOUM5Ci0KLS8qIE1EUkVGUjogU0RSQU0gUmVmcmVzaCBDb250cm9sIFJlZ2lzdGVyICovCi0jZGVmaW5lIENPTkZJR19TWVNfTURSRUZSX1ZBTAkJCTB4MDAwMTgwMTgKLQotLyogTURNUlM6IE1vZGUgUmVnaXN0ZXIgU2V0IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19NRE1SU19WQUwJCQkweDAwMjIwMDIyCi0KLSNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MveW9zZW1pdGUuaCBiL2luY2x1ZGUvY29uZmlncy95b3NlbWl0ZS5oCmluZGV4IDBkNDUwZjUuLjBjYmVmNmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy95b3NlbWl0ZS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy95b3NlbWl0ZS5oCkBAIC03Nyw5ICs3Nyw4IEBACiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0RDQUNIRQkxCQkvKiBkLWNhY2hlIGFzIGluaXQgcmFtCSovCiAjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweDcwMDAwMDAwCQkvKiBEQ2FjaGUgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJKDQgPDwgMTApCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkyNTYJCQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUJKDQgPDwgMTApCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX1NJWkUgLSBHRU5FUkFURURfR0JMX0RBVEFfU0laRSkKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MveXVjY2EuaCBiL2luY2x1ZGUvY29uZmlncy95dWNjYS5oCmluZGV4IDhkNWQ0NWYuLmZiNjg0YjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy95dWNjYS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy95dWNjYS5oCkBAIC05NywxMCArOTcsOSBAQAogI2RlZmluZSBDT05GSUdfU1lTX1RFTVBfU1RBQ0tfT0NNCTEKICNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9BRERSCUNPTkZJR19TWVNfSVNSQU1fQkFTRQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIJQ09ORklHX1NZU19JU1JBTV9CQVNFCS8qIEluaXRpYWwgUkFNIGFkZHJlc3MJKi8KLSNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgyMDAwCQkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4CQkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fU0laRQkweDIwMDAJCS8qIFNpemUgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fU0laRSAtIEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFKQogI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUCShDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVCAtIDB4NCkKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3pldXMuaCBiL2luY2x1ZGUvY29uZmlncy96ZXVzLmgKaW5kZXggNWRkZWM4NC4uZjlhNmI5MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3pldXMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvemV1cy5oCkBAIC0yNTMsMTAgKzI1Myw5IEBACiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUgkweEY4MDAwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfU0laRQkweDEwMDAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCUNPTkZJR19TWVNfT0NNX0RBVEFfQUREUiAvKiBpbnNpZGUgb2YgT0NNCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0VORAlDT05GSUdfU1lTX09DTV9EQVRBX1NJWkUgLyogRW5kIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9TSVpFCUNPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAvKiBTaXplIG9mIHVzZWQgYXJlYSBpbiBSQU0JKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUJMTI4ICAvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQJKENPTkZJR19TWVNfSU5JVF9SQU1fRU5EIC0gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAkoQ09ORklHX1NZU19JTklUX1JBTV9TSVpFIC0gR0VORVJBVEVEX0dCTF9EQVRBX1NJWkUpCiAvKiByZXNlcnZlIHNvbWUgbWVtb3J5IGZvciBQT1NUIGFuZCBCT09UIGxpbWl0IGluZm8gKi8KICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAkoQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgLSAxNikKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3ppcGl0ejIuaCBiL2luY2x1ZGUvY29uZmlncy96aXBpdHoyLmgKaW5kZXggY2U2NWQxZi4uYThiODhkYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3ppcGl0ejIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvemlwaXR6Mi5oCkBAIC0yNyw2ICsyNyw3IEBACiAgKi8KICNkZWZpbmUJQ09ORklHX1BYQTI3WAkJMQkvKiBNYXJ2ZWxsIFBYQTI3MCBDUFUgKi8KICNkZWZpbmUJQ09ORklHX1pJUElUWjIJCTEJLyogWmlwaXQgWjIgYm9hcmQgKi8KKyNkZWZpbmUJQ09ORklHX1NZU19URVhUX0JBU0UJMHgwCiAKICN1bmRlZglCT0FSRF9MQVRFX0lOSVQKICN1bmRlZglDT05GSUdfU0tJUF9SRUxPQ0FURV9VQk9PVApAQCAtNDIsNyArNDMsNiBAQAogI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCQkweDIwMDAwCiAKICNkZWZpbmUJQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMTI4KjEwMjQpCi0jZGVmaW5lCUNPTkZJR19TWVNfR0JMX0RBVEFfU0laRQk1MTIKICNkZWZpbmUJQ09ORklHX0FSQ0hfQ1BVX0lOSVQKIAogI2RlZmluZQlDT05GSUdfQk9PVENPTU1BTkQJCQkJCQlcCkBAIC0xNzcsNyArMTc3LDcgQEAKICNkZWZpbmUJQ09ORklHX1NZU19MT0FEX0FERFIJCUNPTkZJR19TWVNfRFJBTV9CQVNFCiAKICNkZWZpbmUgQ09ORklHX1NZU19TRFJBTV9CQVNFCQlQSFlTX1NEUkFNXzEKLSNkZWZpbmUJQ09ORklHX1NZU19JTklUX1NQX0FERFIJCShDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgKyBQSFlTX1NEUkFNXzEgKyAyMDQ4KQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFICsgUEhZU19TRFJBTV8xICsgMjA0OCkKIAogLyoKICAqIE5PUiBGTEFTSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3p5bG9uaXRlLmggYi9pbmNsdWRlL2NvbmZpZ3Mvenlsb25pdGUuaAppbmRleCBjMzNjYTJkLi40ZWNlZjk0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvenlsb25pdGUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvenlsb25pdGUuaApAQCAtNTUsNyArNTUsNiBAQAogICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCSAgICAoQ09ORklHX0VOVl9TSVpFICsgMTI4KjEwMjQpCi0jZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCiAKIC8qCiAgKiBIYXJkd2FyZSBkcml2ZXJzCkBAIC0xOTEsNyArMTkwLDcgQEAKICN1bmRlZiBDT05GSUdfU1lTX1NLSVBfRFJBTV9TQ1JVQgogCiAjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJUEhZU19TRFJBTV8xCi0jZGVmaW5lCUNPTkZJR19TWVNfSU5JVF9TUF9BRERSCQkoQ09ORklHX1NZU19HQkxfREFUQV9TSVpFICsgUEhZU19TRFJBTV8xKQorI2RlZmluZQlDT05GSUdfU1lTX0lOSVRfU1BfQUREUgkJKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFICsgUEhZU19TRFJBTV8xKQogCiAvKgogICogTkFORCBGbGFzaApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9sZWQtZGlzcGxheS5oIGIvaW5jbHVkZS9sZWQtZGlzcGxheS5oCmluZGV4IDQxYzM3NDQuLmVhYTBmNDAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGVkLWRpc3BsYXkuaAorKysgYi9pbmNsdWRlL2xlZC1kaXNwbGF5LmgKQEAgLTI5LDcgKzI5LDYgQEAKIC8qIERpc3BsYXkgQ29tbWFuZHMgKi8KICNkZWZpbmUgRElTUExBWV9DTEVBUgkweDEgLyogQ2xlYXIgdGhlIGRpc3BsYXkgKi8KICNkZWZpbmUgRElTUExBWV9IT01FCTB4MiAvKiBTZXQgY3Vyc29yIGF0IGhvbWUgcG9zaXRpb24gKi8KLSNkZWZpbmUgRElTUExBWV9NQVJLCTB4NCAvKiBFbmFibGUgdGhlIGRlY2ltYWwgcG9pbnQgbGVkLCBpZiBpbXBsZW1lbnRlZCAqLwogCiB2b2lkIGRpc3BsYXlfc2V0KGludCBjbWQpOwogaW50IGRpc3BsYXlfcHV0YyhjaGFyIGMpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mYi5oIGIvaW5jbHVkZS9saW51eC9mYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YWM0YmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4L2ZiLmgKQEAgLTAsMCArMSw2MTYgQEAKKyNpZm5kZWYgX0xJTlVYX0ZCX0gKKyNkZWZpbmUgX0xJTlVYX0ZCX0gKKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKKy8qIERlZmluaXRpb25zIG9mIGZyYW1lIGJ1ZmZlcnMJCQkJCQkqLworCisjZGVmaW5lIEZCX01BWAkJCTMyCS8qIHN1ZmZpY2llbnQgZm9yIG5vdyAqLworCisjZGVmaW5lIEZCX1RZUEVfUEFDS0VEX1BJWEVMUwkJMAkvKiBQYWNrZWQgUGl4ZWxzCSovCisKKyNkZWZpbmUgRkJfVklTVUFMX01PTk8wMQkJMAkvKiBNb25vY2hyLiAxPUJsYWNrIDA9V2hpdGUgKi8KKyNkZWZpbmUgRkJfVklTVUFMX01PTk8xMAkJMQkvKiBNb25vY2hyLiAxPVdoaXRlIDA9QmxhY2sgKi8KKyNkZWZpbmUgRkJfVklTVUFMX1RSVUVDT0xPUgkJMgkvKiBUcnVlIGNvbG9yCSovCisjZGVmaW5lIEZCX1ZJU1VBTF9QU0VVRE9DT0xPUgkJMwkvKiBQc2V1ZG8gY29sb3IgKGxpa2UgYXRhcmkpICovCisjZGVmaW5lIEZCX1ZJU1VBTF9ESVJFQ1RDT0xPUgkJNAkvKiBEaXJlY3QgY29sb3IgKi8KKyNkZWZpbmUgRkJfVklTVUFMX1NUQVRJQ19QU0VVRE9DT0xPUgk1CS8qIFBzZXVkbyBjb2xvciByZWFkb25seSAqLworCisjZGVmaW5lIEZCX0FDQ0VMX05PTkUJCTAJLyogbm8gaGFyZHdhcmUgYWNjZWxlcmF0b3IJKi8KKworc3RydWN0IGZiX2ZpeF9zY3JlZW5pbmZvIHsKKwljaGFyIGlkWzE2XTsJCQkvKiBpZGVudGlmaWNhdGlvbiBzdHJpbmcgZWcgIlRUIEJ1aWx0aW4iICovCisJdW5zaWduZWQgbG9uZyBzbWVtX3N0YXJ0OwkvKiBTdGFydCBvZiBmcmFtZSBidWZmZXIgbWVtICovCisJCQkJCS8qIChwaHlzaWNhbCBhZGRyZXNzKSAqLworCV9fdTMyIHNtZW1fbGVuOwkJCS8qIExlbmd0aCBvZiBmcmFtZSBidWZmZXIgbWVtICovCisJX191MzIgdHlwZTsJCQkvKiBzZWUgRkJfVFlQRV8qCQkqLworCV9fdTMyIHR5cGVfYXV4OwkJCS8qIEludGVybGVhdmUgZm9yIGludGVybGVhdmVkIFBsYW5lcyAqLworCV9fdTMyIHZpc3VhbDsJCQkvKiBzZWUgRkJfVklTVUFMXyoJCSovCisJX191MTYgeHBhbnN0ZXA7CQkJLyogemVybyBpZiBubyBoYXJkd2FyZSBwYW5uaW5nICAqLworCV9fdTE2IHlwYW5zdGVwOwkJCS8qIHplcm8gaWYgbm8gaGFyZHdhcmUgcGFubmluZyAgKi8KKwlfX3UxNiB5d3JhcHN0ZXA7CQkvKiB6ZXJvIGlmIG5vIGhhcmR3YXJlIHl3cmFwICAgICovCisJX191MzIgbGluZV9sZW5ndGg7CQkvKiBsZW5ndGggb2YgYSBsaW5lIGluIGJ5dGVzICAgICovCisJdW5zaWduZWQgbG9uZyBtbWlvX3N0YXJ0OwkvKiBTdGFydCBvZiBNZW1vcnkgTWFwcGVkIEkvTyAgICovCisJCQkJCS8qIChwaHlzaWNhbCBhZGRyZXNzKSAqLworCV9fdTMyIG1taW9fbGVuOwkJCS8qIExlbmd0aCBvZiBNZW1vcnkgTWFwcGVkIEkvTyAgKi8KKwlfX3UzMiBhY2NlbDsJCQkvKiBJbmRpY2F0ZSB0byBkcml2ZXIgd2hpY2gJKi8KKwkJCQkJLyogIHNwZWNpZmljIGNoaXAvY2FyZCB3ZSBoYXZlCSovCisJX191MTYgcmVzZXJ2ZWRbM107CQkvKiBSZXNlcnZlZCBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkgKi8KK307CisKKy8qCisgKiBJbnRlcnByZXRhdGlvbiBvZiBvZmZzZXQgZm9yIGNvbG9yIGZpZWxkczogQWxsIG9mZnNldHMgYXJlIGZyb20gdGhlIHJpZ2h0LAorICogaW5zaWRlIGEgInBpeGVsIiB2YWx1ZSwgd2hpY2ggaXMgZXhhY3RseSAnYml0c19wZXJfcGl4ZWwnIHdpZGUgKG1lYW5zOiB5b3UKKyAqIGNhbiB1c2UgdGhlIG9mZnNldCBhcyByaWdodCBhcmd1bWVudCB0byA8PCkuIEEgcGl4ZWwgYWZ0ZXJ3YXJkcyBpcyBhIGJpdAorICogc3RyZWFtIGFuZCBpcyB3cml0dGVuIHRvIHZpZGVvIG1lbW9yeSBhcyB0aGF0IHVubW9kaWZpZWQuCisgKgorICogRm9yIHBzZXVkb2NvbG9yOiBvZmZzZXQgYW5kIGxlbmd0aCBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBjb2xvcgorICogY29tcG9uZW50cy4gT2Zmc2V0IHNwZWNpZmllcyB0aGUgcG9zaXRpb24gb2YgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdAorICogb2YgdGhlIHBhbGxldHRlIGluZGV4IGluIGEgcGl4ZWwgdmFsdWUuIExlbmd0aCBpbmRpY2F0ZXMgdGhlIG51bWJlcgorICogb2YgYXZhaWxhYmxlIHBhbGV0dGUgZW50cmllcyAoaS5lLiAjIG9mIGVudHJpZXMgPSAxIDw8IGxlbmd0aCkuCisgKi8KK3N0cnVjdCBmYl9iaXRmaWVsZCB7CisJX191MzIgb2Zmc2V0OwkJCS8qIGJlZ2lubmluZyBvZiBiaXRmaWVsZAkqLworCV9fdTMyIGxlbmd0aDsJCQkvKiBsZW5ndGggb2YgYml0ZmllbGQJCSovCisJX191MzIgbXNiX3JpZ2h0OworCit9OworCisjZGVmaW5lIEZCX05PTlNURF9IQU0JCTEJLyogSG9sZC1BbmQtTW9kaWZ5IChIQU0pICAgICAgICAqLworI2RlZmluZSBGQl9OT05TVERfUkVWX1BJWF9JTl9CCTIJLyogb3JkZXIgb2YgcGl4ZWxzIGluIGVhY2ggYnl0ZSBpcyByZXZlcnNlZCAqLworCisjZGVmaW5lIEZCX0FDVElWQVRFX05PVwkJMAkvKiBzZXQgdmFsdWVzIGltbWVkaWF0ZWx5IChvciB2YmwpKi8KKyNkZWZpbmUgRkJfQUNUSVZBVEVfTlhUT1BFTgkxCS8qIGFjdGl2YXRlIG9uIG5leHQgb3BlbgkqLworI2RlZmluZSBGQl9BQ1RJVkFURV9URVNUCTIJLyogZG9uJ3Qgc2V0LCByb3VuZCB1cCBpbXBvc3NpYmxlICovCisjZGVmaW5lIEZCX0FDVElWQVRFX01BU0sgICAgICAgMTUKKwkJCQkJLyogdmFsdWVzCQkJKi8KKyNkZWZpbmUgRkJfQUNUSVZBVEVfVkJMCSAgICAgICAxNgkvKiBhY3RpdmF0ZSB2YWx1ZXMgb24gbmV4dCB2YmwgICovCisjZGVmaW5lIEZCX0NIQU5HRV9DTUFQX1ZCTCAgICAgMzIJLyogY2hhbmdlIGNvbG9ybWFwIG9uIHZibAkqLworI2RlZmluZSBGQl9BQ1RJVkFURV9BTEwJICAgICAgIDY0CS8qIGNoYW5nZSBhbGwgVkNzIG9uIHRoaXMgZmIJKi8KKyNkZWZpbmUgRkJfQUNUSVZBVEVfRk9SQ0UgICAgIDEyOAkvKiBmb3JjZSBhcHBseSBldmVuIHdoZW4gbm8gY2hhbmdlKi8KKyNkZWZpbmUgRkJfQUNUSVZBVEVfSU5WX01PREUgIDI1NiAgICAgICAvKiBpbnZhbGlkYXRlIHZpZGVvbW9kZSAqLworCisjZGVmaW5lIEZCX1NZTkNfSE9SX0hJR0hfQUNUCTEJLyogaG9yaXpvbnRhbCBzeW5jIGhpZ2ggYWN0aXZlCSovCisjZGVmaW5lIEZCX1NZTkNfVkVSVF9ISUdIX0FDVAkyCS8qIHZlcnRpY2FsIHN5bmMgaGlnaCBhY3RpdmUJKi8KKyNkZWZpbmUgRkJfU1lOQ19FWFQJCTQJLyogZXh0ZXJuYWwgc3luYwkJKi8KKyNkZWZpbmUgRkJfU1lOQ19DT01QX0hJR0hfQUNUCTgJLyogY29tcG9zaXRlIHN5bmMgaGlnaCBhY3RpdmUgICAqLworI2RlZmluZSBGQl9TWU5DX0JST0FEQ0FTVAkxNgkvKiBicm9hZGNhc3QgdmlkZW8gdGltaW5ncyAgICAgICovCisJCQkJCS8qIHZ0b3RhbCA9IDE0NGQvMjg4bi81NzZpID0+IFBBTCAgKi8KKwkJCQkJLyogdnRvdGFsID0gMTIxZC8yNDJuLzQ4NGkgPT4gTlRTQyAqLworI2RlZmluZSBGQl9TWU5DX09OX0dSRUVOCTMyCS8qIHN5bmMgb24gZ3JlZW4gKi8KKworI2RlZmluZSBGQl9WTU9ERV9OT05JTlRFUkxBQ0VEICAwCS8qIG5vbiBpbnRlcmxhY2VkICovCisjZGVmaW5lIEZCX1ZNT0RFX0lOVEVSTEFDRUQJMQkvKiBpbnRlcmxhY2VkCSovCisjZGVmaW5lIEZCX1ZNT0RFX0RPVUJMRQkJMgkvKiBkb3VibGUgc2NhbiAqLworI2RlZmluZSBGQl9WTU9ERV9PRERfRkxEX0ZJUlNUCTQJLyogaW50ZXJsYWNlZDogdG9wIGxpbmUgZmlyc3QgKi8KKyNkZWZpbmUgRkJfVk1PREVfTUFTSwkJMjU1CisKKyNkZWZpbmUgRkJfVk1PREVfWVdSQVAJCTI1NgkvKiB5d3JhcCBpbnN0ZWFkIG9mIHBhbm5pbmcgICAgICovCisjZGVmaW5lIEZCX1ZNT0RFX1NNT09USF9YUEFOCTUxMgkvKiBzbW9vdGggeHBhbiBwb3NzaWJsZSAoaW50ZXJuYWxseSB1c2VkKSAqLworI2RlZmluZSBGQl9WTU9ERV9DT05VUERBVEUJNTEyCS8qIGRvbid0IHVwZGF0ZSB4L3lvZmZzZXQJKi8KKworLyoKKyAqIERpc3BsYXkgcm90YXRpb24gc3VwcG9ydAorICovCisjZGVmaW5lIEZCX1JPVEFURV9VUiAgICAgIDAKKyNkZWZpbmUgRkJfUk9UQVRFX0NXICAgICAgMQorI2RlZmluZSBGQl9ST1RBVEVfVUQgICAgICAyCisjZGVmaW5lIEZCX1JPVEFURV9DQ1cgICAgIDMKKworI2RlZmluZSBQSUNPUzJLSFooYSkgKDEwMDAwMDAwMDBVTC8oYSkpCisjZGVmaW5lIEtIWjJQSUNPUyhhKSAoMTAwMDAwMDAwMFVMLyhhKSkKKworc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvIHsKKwlfX3UzMiB4cmVzOwkJCS8qIHZpc2libGUgcmVzb2x1dGlvbgkJKi8KKwlfX3UzMiB5cmVzOworCV9fdTMyIHhyZXNfdmlydHVhbDsJCS8qIHZpcnR1YWwgcmVzb2x1dGlvbgkJKi8KKwlfX3UzMiB5cmVzX3ZpcnR1YWw7CisJX191MzIgeG9mZnNldDsJCQkvKiBvZmZzZXQgZnJvbSB2aXJ0dWFsIHRvIHZpc2libGUgKi8KKwlfX3UzMiB5b2Zmc2V0OwkJCS8qIHJlc29sdXRpb24JCQkqLworCisJX191MzIgYml0c19wZXJfcGl4ZWw7CQkvKiBndWVzcyB3aGF0CQkJKi8KKwlfX3UzMiBncmF5c2NhbGU7CQkvKiAhPSAwIEdyYXlsZXZlbHMgaW5zdGVhZCBvZiBjb2xvcnMgKi8KKworCXN0cnVjdCBmYl9iaXRmaWVsZCByZWQ7CQkvKiBiaXRmaWVsZCBpbiBmYiBtZW0gaWYgdHJ1ZSBjb2xvciwgKi8KKwlzdHJ1Y3QgZmJfYml0ZmllbGQgZ3JlZW47CS8qIGVsc2Ugb25seSBsZW5ndGggaXMgc2lnbmlmaWNhbnQgKi8KKwlzdHJ1Y3QgZmJfYml0ZmllbGQgYmx1ZTsKKwlzdHJ1Y3QgZmJfYml0ZmllbGQgdHJhbnNwOwkvKiB0cmFuc3BhcmVuY3kJCQkqLworCisJX191MzIgbm9uc3RkOwkJCS8qICE9IDAgTm9uIHN0YW5kYXJkIHBpeGVsIGZvcm1hdCAqLworCisJX191MzIgYWN0aXZhdGU7CQkJLyogc2VlIEZCX0FDVElWQVRFXyoJCSovCisKKwlfX3UzMiBoZWlnaHQ7CQkJLyogaGVpZ2h0IG9mIHBpY3R1cmUgaW4gbW0gICAgKi8KKwlfX3UzMiB3aWR0aDsJCQkvKiB3aWR0aCBvZiBwaWN0dXJlIGluIG1tICAgICAqLworCisJX191MzIgYWNjZWxfZmxhZ3M7CQkvKiAoT0JTT0xFVEUpIHNlZSBmYl9pbmZvLmZsYWdzICovCisKKwkvKiBUaW1pbmc6IEFsbCB2YWx1ZXMgaW4gcGl4Y2xvY2tzLCBleGNlcHQgcGl4Y2xvY2sgKG9mIGNvdXJzZSkgKi8KKwlfX3UzMiBwaXhjbG9jazsJCQkvKiBwaXhlbCBjbG9jayBpbiBwcyAocGljbyBzZWNvbmRzKSAqLworCV9fdTMyIGxlZnRfbWFyZ2luOwkJLyogdGltZSBmcm9tIHN5bmMgdG8gcGljdHVyZQkqLworCV9fdTMyIHJpZ2h0X21hcmdpbjsJCS8qIHRpbWUgZnJvbSBwaWN0dXJlIHRvIHN5bmMJKi8KKwlfX3UzMiB1cHBlcl9tYXJnaW47CQkvKiB0aW1lIGZyb20gc3luYyB0byBwaWN0dXJlCSovCisJX191MzIgbG93ZXJfbWFyZ2luOworCV9fdTMyIGhzeW5jX2xlbjsJCS8qIGxlbmd0aCBvZiBob3Jpem9udGFsIHN5bmMJKi8KKwlfX3UzMiB2c3luY19sZW47CQkvKiBsZW5ndGggb2YgdmVydGljYWwgc3luYwkqLworCV9fdTMyIHN5bmM7CQkJLyogc2VlIEZCX1NZTkNfKgkJKi8KKwlfX3UzMiB2bW9kZTsJCQkvKiBzZWUgRkJfVk1PREVfKgkJKi8KKwlfX3UzMiByb3RhdGU7CQkJLyogYW5nbGUgd2Ugcm90YXRlIGNvdW50ZXIgY2xvY2t3aXNlICovCisJX191MzIgcmVzZXJ2ZWRbNV07CQkvKiBSZXNlcnZlZCBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkgKi8KK307CisKK3N0cnVjdCBmYl9jbWFwIHsKKwlfX3UzMiBzdGFydDsJCQkvKiBGaXJzdCBlbnRyeQkqLworCV9fdTMyIGxlbjsJCQkvKiBOdW1iZXIgb2YgZW50cmllcyAqLworCV9fdTE2ICpyZWQ7CQkJLyogUmVkIHZhbHVlcwkqLworCV9fdTE2ICpncmVlbjsKKwlfX3UxNiAqYmx1ZTsKKwlfX3UxNiAqdHJhbnNwOwkJCS8qIHRyYW5zcGFyZW5jeSwgY2FuIGJlIE5VTEwgKi8KK307CisKK3N0cnVjdCBmYl9jb24yZmJtYXAgeworCV9fdTMyIGNvbnNvbGU7CisJX191MzIgZnJhbWVidWZmZXI7Cit9OworCisvKiBWRVNBIEJsYW5raW5nIExldmVscyAqLworI2RlZmluZSBWRVNBX05PX0JMQU5LSU5HICAgICAgICAwCisjZGVmaW5lIFZFU0FfVlNZTkNfU1VTUEVORCAgICAgIDEKKyNkZWZpbmUgVkVTQV9IU1lOQ19TVVNQRU5EICAgICAgMgorI2RlZmluZSBWRVNBX1BPV0VSRE9XTiAgICAgICAgICAzCisKKworZW51bSB7CisJLyogc2NyZWVuOiB1bmJsYW5rZWQsIGhzeW5jOiBvbiwgIHZzeW5jOiBvbiAqLworCUZCX0JMQU5LX1VOQkxBTksgICAgICAgPSBWRVNBX05PX0JMQU5LSU5HLAorCisJLyogc2NyZWVuOiBibGFua2VkLCAgIGhzeW5jOiBvbiwgIHZzeW5jOiBvbiAqLworCUZCX0JMQU5LX05PUk1BTCAgICAgICAgPSBWRVNBX05PX0JMQU5LSU5HICsgMSwKKworCS8qIHNjcmVlbjogYmxhbmtlZCwgICBoc3luYzogb24sICB2c3luYzogb2ZmICovCisJRkJfQkxBTktfVlNZTkNfU1VTUEVORCA9IFZFU0FfVlNZTkNfU1VTUEVORCArIDEsCisKKwkvKiBzY3JlZW46IGJsYW5rZWQsICAgaHN5bmM6IG9mZiwgdnN5bmM6IG9uICovCisJRkJfQkxBTktfSFNZTkNfU1VTUEVORCA9IFZFU0FfSFNZTkNfU1VTUEVORCArIDEsCisKKwkvKiBzY3JlZW46IGJsYW5rZWQsICAgaHN5bmM6IG9mZiwgdnN5bmM6IG9mZiAqLworCUZCX0JMQU5LX1BPV0VSRE9XTiAgICAgPSBWRVNBX1BPV0VSRE9XTiArIDEKK307CisKKyNkZWZpbmUgRkJfVkJMQU5LX1ZCTEFOS0lORwkweDAwMQkvKiBjdXJyZW50bHkgaW4gYSB2ZXJ0aWNhbCBibGFuayAqLworI2RlZmluZSBGQl9WQkxBTktfSEJMQU5LSU5HCTB4MDAyCS8qIGN1cnJlbnRseSBpbiBhIGhvcml6b250YWwgYmxhbmsgKi8KKyNkZWZpbmUgRkJfVkJMQU5LX0hBVkVfVkJMQU5LCTB4MDA0CS8qIHZlcnRpY2FsIGJsYW5rcyBjYW4gYmUgZGV0ZWN0ZWQgKi8KKyNkZWZpbmUgRkJfVkJMQU5LX0hBVkVfSEJMQU5LCTB4MDA4CS8qIGhvcml6b250YWwgYmxhbmtzIGNhbiBiZSBkZXRlY3RlZCAqLworI2RlZmluZSBGQl9WQkxBTktfSEFWRV9DT1VOVAkweDAxMAkvKiBnbG9iYWwgcmV0cmFjZSBjb3VudGVyIGlzIGF2YWlsYWJsZSAqLworI2RlZmluZSBGQl9WQkxBTktfSEFWRV9WQ09VTlQJMHgwMjAJLyogdGhlIHZjb3VudCBmaWVsZCBpcyB2YWxpZCAqLworI2RlZmluZSBGQl9WQkxBTktfSEFWRV9IQ09VTlQJMHgwNDAJLyogdGhlIGhjb3VudCBmaWVsZCBpcyB2YWxpZCAqLworI2RlZmluZSBGQl9WQkxBTktfVlNZTkNJTkcJMHgwODAJLyogY3VycmVudGx5IGluIGEgdnN5bmMgKi8KKyNkZWZpbmUgRkJfVkJMQU5LX0hBVkVfVlNZTkMJMHgxMDAJLyogdmVyaWNhbCBzeW5jcyBjYW4gYmUgZGV0ZWN0ZWQgKi8KKworc3RydWN0IGZiX3ZibGFuayB7CisJX191MzIgZmxhZ3M7CQkJLyogRkJfVkJMQU5LIGZsYWdzICovCisJX191MzIgY291bnQ7CQkJLyogY291bnRlciBvZiByZXRyYWNlcyBzaW5jZSBib290ICovCisJX191MzIgdmNvdW50OwkJCS8qIGN1cnJlbnQgc2NhbmxpbmUgcG9zaXRpb24gKi8KKwlfX3UzMiBoY291bnQ7CQkJLyogY3VycmVudCBzY2FuZG90IHBvc2l0aW9uICovCisJX191MzIgcmVzZXJ2ZWRbNF07CQkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkgKi8KK307CisKKy8qIEludGVybmFsIEhXIGFjY2VsICovCisjZGVmaW5lIFJPUF9DT1BZIDAKKyNkZWZpbmUgUk9QX1hPUiAgMQorCitzdHJ1Y3QgZmJfY29weWFyZWEgeworCV9fdTMyIGR4OworCV9fdTMyIGR5OworCV9fdTMyIHdpZHRoOworCV9fdTMyIGhlaWdodDsKKwlfX3UzMiBzeDsKKwlfX3UzMiBzeTsKK307CisKK3N0cnVjdCBmYl9maWxscmVjdCB7CisJX191MzIgZHg7CS8qIHNjcmVlbi1yZWxhdGl2ZSAqLworCV9fdTMyIGR5OworCV9fdTMyIHdpZHRoOworCV9fdTMyIGhlaWdodDsKKwlfX3UzMiBjb2xvcjsKKwlfX3UzMiByb3A7Cit9OworCitzdHJ1Y3QgZmJfaW1hZ2UgeworCV9fdTMyIGR4OwkJLyogV2hlcmUgdG8gcGxhY2UgaW1hZ2UgKi8KKwlfX3UzMiBkeTsKKwlfX3UzMiB3aWR0aDsJCS8qIFNpemUgb2YgaW1hZ2UgKi8KKwlfX3UzMiBoZWlnaHQ7CisJX191MzIgZmdfY29sb3I7CQkvKiBPbmx5IHVzZWQgd2hlbiBhIG1vbm8gYml0bWFwICovCisJX191MzIgYmdfY29sb3I7CisJX191OCAgZGVwdGg7CQkvKiBEZXB0aCBvZiB0aGUgaW1hZ2UgKi8KKwljb25zdCBjaGFyICpkYXRhOwkvKiBQb2ludGVyIHRvIGltYWdlIGRhdGEgKi8KKwlzdHJ1Y3QgZmJfY21hcCBjbWFwOwkvKiBjb2xvciBtYXAgaW5mbyAqLworfTsKKworLyoKKyAqIGhhcmR3YXJlIGN1cnNvciBjb250cm9sCisgKi8KKworI2RlZmluZSBGQl9DVVJfU0VUSU1BR0UgMHgwMQorI2RlZmluZSBGQl9DVVJfU0VUUE9TICAgMHgwMgorI2RlZmluZSBGQl9DVVJfU0VUSE9UICAgMHgwNAorI2RlZmluZSBGQl9DVVJfU0VUQ01BUCAgMHgwOAorI2RlZmluZSBGQl9DVVJfU0VUU0hBUEUgMHgxMAorI2RlZmluZSBGQl9DVVJfU0VUU0laRQkweDIwCisjZGVmaW5lIEZCX0NVUl9TRVRBTEwgICAweEZGCisKK3N0cnVjdCBmYmN1cnBvcyB7CisJX191MTYgeCwgeTsKK307CisKK3N0cnVjdCBmYl9jdXJzb3IgeworCV9fdTE2IHNldDsJCS8qIHdoYXQgdG8gc2V0ICovCisJX191MTYgZW5hYmxlOwkJLyogY3Vyc29yIG9uL29mZiAqLworCV9fdTE2IHJvcDsJCS8qIGJpdG9wIG9wZXJhdGlvbiAqLworCWNvbnN0IGNoYXIgKm1hc2s7CS8qIGN1cnNvciBtYXNrIGJpdHMgKi8KKwlzdHJ1Y3QgZmJjdXJwb3MgaG90OwkvKiBjdXJzb3IgaG90IHNwb3QgKi8KKwlzdHJ1Y3QgZmJfaW1hZ2UJaW1hZ2U7CS8qIEN1cnNvciBpbWFnZSAqLworfTsKKworI2lmZGVmIENPTkZJR19GQl9CQUNLTElHSFQKKy8qIFNldHRpbmdzIGZvciB0aGUgZ2VuZXJpYyBiYWNrbGlnaHQgY29kZSAqLworI2RlZmluZSBGQl9CQUNLTElHSFRfTEVWRUxTCTEyOAorI2RlZmluZSBGQl9CQUNLTElHSFRfTUFYCTB4RkYKKyNlbmRpZgorCisjaWZkZWYgX19LRVJORUxfXworCitzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7CitzdHJ1Y3QgZmJfaW5mbzsKK3N0cnVjdCBkZXZpY2U7CitzdHJ1Y3QgZmlsZTsKKworLyogRGVmaW5pdGlvbnMgYmVsb3cgYXJlIHVzZWQgaW4gdGhlIHBhcnNlZCBtb25pdG9yIHNwZWNzICovCisjZGVmaW5lIEZCX0RQTVNfQUNUSVZFX09GRgkxCisjZGVmaW5lIEZCX0RQTVNfU1VTUEVORAkJMgorI2RlZmluZSBGQl9EUE1TX1NUQU5EQlkJCTQKKworI2RlZmluZSBGQl9ESVNQX0RESQkJMQorI2RlZmluZSBGQl9ESVNQX0FOQV83MDBfMzAwCTIKKyNkZWZpbmUgRkJfRElTUF9BTkFfNzE0XzI4Ngk0CisjZGVmaW5lIEZCX0RJU1BfQU5BXzEwMDBfNDAwCTgKKyNkZWZpbmUgRkJfRElTUF9BTkFfNzAwXzAwMAkxNgorCisjZGVmaW5lIEZCX0RJU1BfTU9OTwkJMzIKKyNkZWZpbmUgRkJfRElTUF9SR0IJCTY0CisjZGVmaW5lIEZCX0RJU1BfTVVMVEkJCTEyOAorI2RlZmluZSBGQl9ESVNQX1VOS05PV04JCTI1NgorCisjZGVmaW5lIEZCX1NJR05BTF9OT05FCQkwCisjZGVmaW5lIEZCX1NJR05BTF9CTEFOS19CTEFOSwkxCisjZGVmaW5lIEZCX1NJR05BTF9TRVBBUkFURQkyCisjZGVmaW5lIEZCX1NJR05BTF9DT01QT1NJVEUJNAorI2RlZmluZSBGQl9TSUdOQUxfU1lOQ19PTl9HUkVFTgk4CisjZGVmaW5lIEZCX1NJR05BTF9TRVJSQVRJT05fT04JMTYKKworI2RlZmluZSBGQl9NSVNDX1BSSU1fQ09MT1IJMQorI2RlZmluZSBGQl9NSVNDXzFTVF9ERVRBSUwJMgkvKiBGaXJzdCBEZXRhaWxlZCBUaW1pbmcgaXMgcHJlZmVycmVkICovCitzdHJ1Y3QgZmJfY2hyb21hIHsKKwlfX3UzMiByZWR4OwkvKiBpbiBmcmFjdGlvbiBvZiAxMDI0ICovCisJX191MzIgZ3JlZW54OworCV9fdTMyIGJsdWV4OworCV9fdTMyIHdoaXRleDsKKwlfX3UzMiByZWR5OworCV9fdTMyIGdyZWVueTsKKwlfX3UzMiBibHVleTsKKwlfX3UzMiB3aGl0ZXk7Cit9OworCitzdHJ1Y3QgZmJfbW9uc3BlY3MgeworCXN0cnVjdCBmYl9jaHJvbWEgY2hyb21hOworCXN0cnVjdCBmYl92aWRlb21vZGUgKm1vZGVkYjsJLyogbW9kZSBkYXRhYmFzZSAqLworCV9fdTggIG1hbnVmYWN0dXJlcls0XTsJCS8qIE1hbnVmYWN0dXJlciAqLworCV9fdTggIG1vbml0b3JbMTRdOwkJLyogTW9uaXRvciBTdHJpbmcgKi8KKwlfX3U4ICBzZXJpYWxfbm9bMTRdOwkJLyogU2VyaWFsIE51bWJlciAqLworCV9fdTggIGFzY2lpWzE0XTsJCS8qID8gKi8KKwlfX3UzMiBtb2RlZGJfbGVuOwkJLyogbW9kZSBkYXRhYmFzZSBsZW5ndGggKi8KKwlfX3UzMiBtb2RlbDsJCQkvKiBNb25pdG9yIE1vZGVsICovCisJX191MzIgc2VyaWFsOwkJCS8qIFNlcmlhbCBOdW1iZXIgLSBJbnRlZ2VyICovCisJX191MzIgeWVhcjsJCQkvKiBZZWFyIG1hbnVmYWN0dXJlZCAqLworCV9fdTMyIHdlZWs7CQkJLyogV2VlayBNYW51ZmFjdHVyZWQgKi8KKwlfX3UzMiBoZm1pbjsJCQkvKiBoZnJlcSBsb3dlciBsaW1pdCAoSHopICovCisJX191MzIgaGZtYXg7CQkJLyogaGZyZXEgdXBwZXIgbGltaXQgKEh6KSAqLworCV9fdTMyIGRjbGttaW47CQkJLyogcGl4ZWxjbG9jayBsb3dlciBsaW1pdCAoSHopICovCisJX191MzIgZGNsa21heDsJCQkvKiBwaXhlbGNsb2NrIHVwcGVyIGxpbWl0IChIeikgKi8KKwlfX3UxNiBpbnB1dDsJCQkvKiBkaXNwbGF5IHR5cGUgLSBzZWUgRkJfRElTUF8qICovCisJX191MTYgZHBtczsJCQkvKiBEUE1TIHN1cHBvcnQgLSBzZWUgRkJfRFBNU18gKi8KKwlfX3UxNiBzaWduYWw7CQkJLyogU2lnbmFsIFR5cGUgLSBzZWUgRkJfU0lHTkFMXyogKi8KKwlfX3UxNiB2Zm1pbjsJCQkvKiB2ZnJlcSBsb3dlciBsaW1pdCAoSHopICovCisJX191MTYgdmZtYXg7CQkJLyogdmZyZXEgdXBwZXIgbGltaXQgKEh6KSAqLworCV9fdTE2IGdhbW1hOwkJCS8qIEdhbW1hIC0gaW4gZnJhY3Rpb25zIG9mIDEwMCAqLworCV9fdTE2IGd0Zgk6IDE7CQkvKiBzdXBwb3J0cyBHVEYgKi8KKwlfX3UxNiBtaXNjOwkJCS8qIE1pc2MgZmxhZ3MgLSBzZWUgRkJfTUlTQ18qICovCisJX191OCAgdmVyc2lvbjsJCQkvKiBFRElEIHZlcnNpb24uLi4gKi8KKwlfX3U4ICByZXZpc2lvbjsJCQkvKiAuLi5hbmQgcmV2aXNpb24gKi8KKwlfX3U4ICBtYXhfeDsJCQkvKiBNYXhpbXVtIGhvcml6b250YWwgc2l6ZSAoY20pICovCisJX191OCAgbWF4X3k7CQkJLyogTWF4aW11bSB2ZXJ0aWNhbCBzaXplIChjbSkgKi8KK307CisKK3N0cnVjdCBmYl9jbWFwX3VzZXIgeworCV9fdTMyIHN0YXJ0OwkJCS8qIEZpcnN0IGVudHJ5CSovCisJX191MzIgbGVuOwkJCS8qIE51bWJlciBvZiBlbnRyaWVzICovCisJX191MTYgKnJlZDsJCS8qIFJlZCB2YWx1ZXMJKi8KKwlfX3UxNiAqZ3JlZW47CisJX191MTYgKmJsdWU7CisJX191MTYgKnRyYW5zcDsJCS8qIHRyYW5zcGFyZW5jeSwgY2FuIGJlIE5VTEwgKi8KK307CisKK3N0cnVjdCBmYl9pbWFnZV91c2VyIHsKKwlfX3UzMiBkeDsJCQkvKiBXaGVyZSB0byBwbGFjZSBpbWFnZSAqLworCV9fdTMyIGR5OworCV9fdTMyIHdpZHRoOwkJCS8qIFNpemUgb2YgaW1hZ2UgKi8KKwlfX3UzMiBoZWlnaHQ7CisJX191MzIgZmdfY29sb3I7CQkJLyogT25seSB1c2VkIHdoZW4gYSBtb25vIGJpdG1hcCAqLworCV9fdTMyIGJnX2NvbG9yOworCV9fdTggIGRlcHRoOwkJCS8qIERlcHRoIG9mIHRoZSBpbWFnZSAqLworCWNvbnN0IGNoYXIgKmRhdGE7CS8qIFBvaW50ZXIgdG8gaW1hZ2UgZGF0YSAqLworCXN0cnVjdCBmYl9jbWFwX3VzZXIgY21hcDsJLyogY29sb3IgbWFwIGluZm8gKi8KK307CisKK3N0cnVjdCBmYl9jdXJzb3JfdXNlciB7CisJX191MTYgc2V0OwkJCS8qIHdoYXQgdG8gc2V0ICovCisJX191MTYgZW5hYmxlOwkJCS8qIGN1cnNvciBvbi9vZmYgKi8KKwlfX3UxNiByb3A7CQkJLyogYml0b3Agb3BlcmF0aW9uICovCisJY29uc3QgY2hhciAqbWFzazsJLyogY3Vyc29yIG1hc2sgYml0cyAqLworCXN0cnVjdCBmYmN1cnBvcyBob3Q7CQkvKiBjdXJzb3IgaG90IHNwb3QgKi8KKwlzdHJ1Y3QgZmJfaW1hZ2VfdXNlciBpbWFnZTsJLyogQ3Vyc29yIGltYWdlICovCit9OworCisvKgorICogUmVnaXN0ZXIvdW5yZWdpc3RlciBmb3IgZnJhbWVidWZmZXIgZXZlbnRzCisgKi8KKworLyoJVGhlIHJlc29sdXRpb24gb2YgdGhlIHBhc3NlZCBpbiBmYl9pbmZvIGFib3V0IHRvIGNoYW5nZSAqLworI2RlZmluZSBGQl9FVkVOVF9NT0RFX0NIQU5HRQkJMHgwMQorLyoJVGhlIGRpc3BsYXkgb24gdGhpcyBmYl9pbmZvIGlzIGJlZWluZyBzdXNwZW5kZWQsIG5vIGFjY2VzcyB0byB0aGUKKyAqCWZyYW1lYnVmZmVyIGlzIGFsbG93ZWQgYW55IG1vcmUgYWZ0ZXIgdGhhdCBjYWxsIHJldHVybnMKKyAqLworI2RlZmluZSBGQl9FVkVOVF9TVVNQRU5ECQkweDAyCisvKglUaGUgZGlzcGxheSBvbiB0aGlzIGZiX2luZm8gd2FzIHJlc3VtZWQsIHlvdSBjYW4gcmVzdG9yZSB0aGUgZGlzcGxheQorICoJaWYgeW91IG93biBpdAorICovCisjZGVmaW5lIEZCX0VWRU5UX1JFU1VNRQkJCTB4MDMKKy8qICAgICAgQW4gZW50cnkgZnJvbSB0aGUgbW9kZWxpc3Qgd2FzIHJlbW92ZWQgKi8KKyNkZWZpbmUgRkJfRVZFTlRfTU9ERV9ERUxFVEUgICAgICAgICAgICAweDA0CisvKiAgICAgIEEgZHJpdmVyIHJlZ2lzdGVyZWQgaXRzZWxmICovCisjZGVmaW5lIEZCX0VWRU5UX0ZCX1JFR0lTVEVSRUQgICAgICAgICAgMHgwNQorLyogICAgICBBIGRyaXZlciB1bnJlZ2lzdGVyZWQgaXRzZWxmICovCisjZGVmaW5lIEZCX0VWRU5UX0ZCX1VOUkVHSVNURVJFRCAgICAgICAgMHgwNgorLyogICAgICBDT05TT0xFLVNQRUNJRklDOiBnZXQgY29uc29sZSB0byBmcmFtZWJ1ZmZlciBtYXBwaW5nICovCisjZGVmaW5lIEZCX0VWRU5UX0dFVF9DT05TT0xFX01BUCAgICAgICAgMHgwNworLyogICAgICBDT05TT0xFLVNQRUNJRklDOiBzZXQgY29uc29sZSB0byBmcmFtZWJ1ZmZlciBtYXBwaW5nICovCisjZGVmaW5lIEZCX0VWRU5UX1NFVF9DT05TT0xFX01BUCAgICAgICAgMHgwOAorLyogICAgICBBIGhhcmR3YXJlIGRpc3BsYXkgYmxhbmsgY2hhbmdlIG9jY3VyZWQgKi8KKyNkZWZpbmUgRkJfRVZFTlRfQkxBTksgICAgICAgICAgICAgICAgICAweDA5CisvKiAgICAgIFByaXZhdGUgbW9kZWxpc3QgaXMgdG8gYmUgcmVwbGFjZWQgKi8KKyNkZWZpbmUgRkJfRVZFTlRfTkVXX01PREVMSVNUICAgICAgICAgICAweDBBCisvKglUaGUgcmVzb2x1dGlvbiBvZiB0aGUgcGFzc2VkIGluIGZiX2luZm8gYWJvdXQgdG8gY2hhbmdlIGFuZAorICAgICAgICBhbGwgdmMncyBzaG91bGQgYmUgY2hhbmdlZCAgICAgICAgICovCisjZGVmaW5lIEZCX0VWRU5UX01PREVfQ0hBTkdFX0FMTAkweDBCCisvKglBIHNvZnR3YXJlIGRpc3BsYXkgYmxhbmsgY2hhbmdlIG9jY3VyZWQgKi8KKyNkZWZpbmUgRkJfRVZFTlRfQ09OQkxBTksgICAgICAgICAgICAgICAweDBDCisvKiAgICAgIEdldCBkcmF3aW5nIHJlcXVpcmVtZW50cyAgICAgICAgKi8KKyNkZWZpbmUgRkJfRVZFTlRfR0VUX1JFUSAgICAgICAgICAgICAgICAweDBECisvKiAgICAgIFVuYmluZCBmcm9tIHRoZSBjb25zb2xlIGlmIHBvc3NpYmxlICovCisjZGVmaW5lIEZCX0VWRU5UX0ZCX1VOQklORCAgICAgICAgICAgICAgMHgwRQorCitzdHJ1Y3QgZmJfZXZlbnQgeworCXN0cnVjdCBmYl9pbmZvICppbmZvOworCXZvaWQgKmRhdGE7Cit9OworCitzdHJ1Y3QgZmJfYmxpdF9jYXBzIHsKKwl1MzIgeDsKKwl1MzIgeTsKKwl1MzIgbGVuOworCXUzMiBmbGFnczsKK307CisKKy8qCisgKiBQaXhtYXAgc3RydWN0dXJlIGRlZmluaXRpb24KKyAqCisgKiBUaGUgcHVycG9zZSBvZiB0aGlzIHN0cnVjdHVyZSBpcyB0byB0cmFuc2xhdGUgZGF0YQorICogZnJvbSB0aGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQgZm9ybWF0IG9mIGZiZGV2IHRvIHdoYXQKKyAqIGZvcm1hdCB0aGUgaGFyZHdhcmUgbmVlZHMuCisgKi8KKworI2RlZmluZSBGQl9QSVhNQVBfREVGQVVMVCAxICAgICAvKiB1c2VkIGludGVybmFsbHkgYnkgZmJjb24gKi8KKyNkZWZpbmUgRkJfUElYTUFQX1NZU1RFTSAgMiAgICAgLyogbWVtb3J5IGlzIGluIHN5c3RlbSBSQU0gICovCisjZGVmaW5lIEZCX1BJWE1BUF9JTyAgICAgIDQgICAgIC8qIG1lbW9yeSBpcyBpb21hcHBlZCAgICAgICAqLworI2RlZmluZSBGQl9QSVhNQVBfU1lOQyAgICAyNTYgICAvKiBzZXQgaWYgR1BVIGNhbiBETUEgICAgICAgKi8KKworc3RydWN0IGZiX3BpeG1hcCB7CisJdTggICphZGRyOwkJLyogcG9pbnRlciB0byBtZW1vcnkJCQkqLworCXUzMiBzaXplOwkJLyogc2l6ZSBvZiBidWZmZXIgaW4gYnl0ZXMJCSovCisJdTMyIG9mZnNldDsJCS8qIGN1cnJlbnQgb2Zmc2V0IHRvIGJ1ZmZlcgkJKi8KKwl1MzIgYnVmX2FsaWduOwkJLyogYnl0ZSBhbGlnbm1lbnQgb2YgZWFjaCBiaXRtYXAJKi8KKwl1MzIgc2Nhbl9hbGlnbjsJCS8qIGFsaWdubWVudCBwZXIgc2NhbmxpbmUJCSovCisJdTMyIGFjY2Vzc19hbGlnbjsJLyogYWxpZ25tZW50IHBlciByZWFkL3dyaXRlIChiaXRzKQkqLworCXUzMiBmbGFnczsJCS8qIHNlZSBGQl9QSVhNQVBfKgkJCSovCisJdTMyIGJsaXRfeDsgICAgICAgICAgICAgLyogc3VwcG9ydGVkIGJpdCBibG9jayBkaW1lbnNpb25zICgxLTMyKSovCisJdTMyIGJsaXRfeTsgICAgICAgICAgICAgLyogRm9ybWF0OiBibGl0X3ggPSAxIDw8ICh3aWR0aCAtIDEpICAgICovCisJICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICBibGl0X3kgPSAxIDw8IChoZWlnaHQgLSAxKSAgICovCisJICAgICAgICAgICAgICAgICAgICAgICAgLyogaWYgMCwgd2lsbCBiZSBzZXQgdG8gMHhmZmZmZmZmZiAoYWxsKSovCisJLyogYWNjZXNzIG1ldGhvZHMgKi8KKwl2b2lkICgqd3JpdGVpbykoc3RydWN0IGZiX2luZm8gKmluZm8sIHZvaWQgKmRzdCwgdm9pZCAqc3JjLCB1bnNpZ25lZCBpbnQgc2l6ZSk7CisJdm9pZCAoKnJlYWRpbykgKHN0cnVjdCBmYl9pbmZvICppbmZvLCB2b2lkICpkc3QsIHZvaWQgKnNyYywgdW5zaWduZWQgaW50IHNpemUpOworfTsKKworI2lmZGVmIENPTkZJR19GQl9ERUZFUlJFRF9JTworc3RydWN0IGZiX2RlZmVycmVkX2lvIHsKKwkvKiBkZWxheSBiZXR3ZWVuIG1rd3JpdGUgYW5kIGRlZmVycmVkIGhhbmRsZXIgKi8KKwl1bnNpZ25lZCBsb25nIGRlbGF5OworCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBtdXRleCB0aGF0IHByb3RlY3RzIHRoZSBwYWdlIGxpc3QgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIHBhZ2VsaXN0OyAvKiBsaXN0IG9mIHRvdWNoZWQgcGFnZXMgKi8KKwkvKiBjYWxsYmFjayAqLworCXZvaWQgKCpkZWZlcnJlZF9pbykoc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VsaXN0KTsKK307CisjZW5kaWYKKworLyogRkJJTkZPXyogPSBmYl9pbmZvLmZsYWdzIGJpdCBmbGFncyAqLworI2RlZmluZSBGQklORk9fTU9EVUxFCQkweDAwMDEJLyogTG93LWxldmVsIGRyaXZlciBpcyBhIG1vZHVsZSAqLworI2RlZmluZSBGQklORk9fSFdBQ0NFTF9ESVNBQkxFRAkweDAwMDIKKwkvKiBXaGVuIEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEIGlzIHNldDoKKwkgKiAgSGFyZHdhcmUgYWNjZWxlcmF0aW9uIGlzIHR1cm5lZCBvZmYuICBTb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMKKwkgKiAgb2YgcmVxdWlyZWQgZnVuY3Rpb25zIChjb3B5YXJlYSgpLCBmaWxscmVjdCgpLCBhbmQgaW1hZ2VibGl0KCkpCisJICogIHRha2VzIG92ZXI7IGFjY2VsZXJhdGlvbiBlbmdpbmUgc2hvdWxkIGJlIGluIGEgcXVpZXNjZW50IHN0YXRlICovCisKKy8qIGhpbnRzICovCisjZGVmaW5lIEZCSU5GT19QQVJUSUFMX1BBTl9PSwkweDAwNDAgLyogb3R3IHVzZSBwYW4gb25seSBmb3IgZG91YmxlLWJ1ZmZlcmluZyAqLworI2RlZmluZSBGQklORk9fUkVBRFNfRkFTVAkweDAwODAgLyogc29mdC1jb3B5IGZhc3RlciB0aGFuIHJlbmRlcmluZyAqLworCisvKgorICogQSBkcml2ZXIgbWF5IHNldCB0aGlzIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBpdCBkb2VzIHdhbnQgYSBzZXRfcGFyIHRvIGJlCisgKiBjYWxsZWQgZXZlcnkgdGltZSB3aGVuIGZiY29uX3N3aXRjaCBpcyBleGVjdXRlZC4gVGhlIGFkdmFudGFnZSBpcyB0aGF0IHdpdGgKKyAqIHRoaXMgZmxhZyBzZXQgeW91IGNhbiByZWFsbHkgYmUgc3VyZSB0aGF0IHNldF9wYXIgaXMgYWx3YXlzIGNhbGxlZCBiZWZvcmUKKyAqIGFueSBvZiB0aGUgZnVuY3Rpb25zIGRlcGVuZGFudCBvbiB0aGUgY29ycmVjdCBoYXJkd2FyZSBzdGF0ZSBvciBhbHRlcmluZworICogdGhhdCBzdGF0ZSwgZXZlbiBpZiB5b3UgYXJlIHVzaW5nIHNvbWUgYnJva2VuIFggcmVsZWFzZXMuIFRoZSBkaXNhZHZhbnRhZ2UKKyAqIGlzIHRoYXQgaXQgaW50cm9kdWNlcyB1bndhbnRlZCBkZWxheXMgdG8gZXZlcnkgY29uc29sZSBzd2l0Y2ggaWYgc2V0X3BhcgorICogaXMgc2xvdy4gSXQgaXMgYSBnb29kIGlkZWEgdG8gdHJ5IHRoaXMgZmxhZyBpbiB0aGUgZHJpdmVycyBpbml0aWFsaXphdGlvbgorICogY29kZSB3aGVuZXZlciB0aGVyZSBpcyBhIGJ1ZyByZXBvcnQgcmVsYXRlZCB0byBzd2l0Y2hpbmcgYmV0d2VlbiBYIGFuZCB0aGUKKyAqIGZyYW1lYnVmZmVyIGNvbnNvbGUuCisgKi8KKyNkZWZpbmUgRkJJTkZPX01JU0NfQUxXQVlTX1NFVFBBUiAgIDB4NDAwMDAKKworLyoKKyAqIEhvc3QgYW5kIEdQVSBlbmRpYW5uZXNzIGRpZmZlci4KKyAqLworI2RlZmluZSBGQklORk9fRk9SRUlHTl9FTkRJQU4JMHgxMDAwMDAKKy8qCisgKiBCaWcgZW5kaWFuIG1hdGguIFRoaXMgaXMgdGhlIHNhbWUgZmxhZ3MgYXMgYWJvdmUsIGJ1dCB3aXRoIGRpZmZlcmVudAorICogbWVhbmluZywgaXQgaXMgc2V0IGJ5IHRoZSBmYiBzdWJzeXN0ZW0gZGVwZW5kaW5nIEZPUkVJR05fRU5ESUFOIGZsYWcKKyAqIGFuZCBob3N0IGVuZGlhbm5lc3MuIERyaXZlcnMgc2hvdWxkIG5vdCB1c2UgdGhpcyBmbGFnLgorICovCisjZGVmaW5lIEZCSU5GT19CRV9NQVRIICAweDEwMDAwMAorCitzdHJ1Y3QgZmJfaW5mbyB7CisJaW50IG5vZGU7CisJaW50IGZsYWdzOworCXN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyB2YXI7CS8qIEN1cnJlbnQgdmFyICovCisJc3RydWN0IGZiX2ZpeF9zY3JlZW5pbmZvIGZpeDsJLyogQ3VycmVudCBmaXggKi8KKwlzdHJ1Y3QgZmJfbW9uc3BlY3MgbW9uc3BlY3M7CS8qIEN1cnJlbnQgTW9uaXRvciBzcGVjcyAqLworCXN0cnVjdCBmYl9waXhtYXAgcGl4bWFwOwkvKiBJbWFnZSBoYXJkd2FyZSBtYXBwZXIgKi8KKwlzdHJ1Y3QgZmJfcGl4bWFwIHNwcml0ZTsJLyogQ3Vyc29yIGhhcmR3YXJlIG1hcHBlciAqLworCXN0cnVjdCBmYl9jbWFwIGNtYXA7CQkvKiBDdXJyZW50IGNtYXAgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIG1vZGVsaXN0OyAgICAgIC8qIG1vZGUgbGlzdCAqLworCXN0cnVjdCBmYl92aWRlb21vZGUgKm1vZGU7CS8qIGN1cnJlbnQgbW9kZSAqLworCisJY2hhciAqc2NyZWVuX2Jhc2U7CS8qIFZpcnR1YWwgYWRkcmVzcyAqLworCXVuc2lnbmVkIGxvbmcgc2NyZWVuX3NpemU7CS8qIEFtb3VudCBvZiBpb3JlbWFwcGVkIFZSQU0gb3IgMCAqLworCXZvaWQgKnBzZXVkb19wYWxldHRlOwkJLyogRmFrZSBwYWxldHRlIG9mIDE2IGNvbG9ycyAqLworI2RlZmluZSBGQklORk9fU1RBVEVfUlVOTklORwkwCisjZGVmaW5lIEZCSU5GT19TVEFURV9TVVNQRU5ERUQJMQorCXUzMiBzdGF0ZTsJCQkvKiBIYXJkd2FyZSBzdGF0ZSBpLmUgc3VzcGVuZCAqLworCXZvaWQgKmZiY29uX3BhcjsgICAgICAgICAgICAgICAgLyogZmJjb24gdXNlLW9ubHkgcHJpdmF0ZSBhcmVhICovCisJLyogRnJvbSBoZXJlIG9uIGV2ZXJ5dGhpbmcgaXMgZGV2aWNlIGRlcGVuZGVudCAqLworCXZvaWQgKnBhcjsKK307CisKKyNkZWZpbmUgRkJJTkZPX0RFRkFVTFQJMAorCisjZGVmaW5lIEZCSU5GT19GTEFHX01PRFVMRQlGQklORk9fTU9EVUxFCisjZGVmaW5lIEZCSU5GT19GTEFHX0RFRkFVTFQJRkJJTkZPX0RFRkFVTFQKKworLy8gVGhpcyB3aWxsIGdvIGF3YXkKKyNpZiBkZWZpbmVkKF9fc3BhcmNfXykKKworLyogV2UgbWFwIGFsbCBvZiBvdXIgZnJhbWVidWZmZXJzIHN1Y2ggdGhhdCBiaWctZW5kaWFuIGFjY2Vzc2VzCisgKiBhcmUgd2hhdCB3ZSB3YW50LCBzbyB0aGUgZm9sbG93aW5nIGlzIHN1ZmZpY2llbnQuCisgKi8KKworLy8gVGhpcyB3aWxsIGdvIGF3YXkKKyNkZWZpbmUgZmJfcmVhZGIgc2J1c19yZWFkYgorI2RlZmluZSBmYl9yZWFkdyBzYnVzX3JlYWR3CisjZGVmaW5lIGZiX3JlYWRsIHNidXNfcmVhZGwKKyNkZWZpbmUgZmJfcmVhZHEgc2J1c19yZWFkcQorI2RlZmluZSBmYl93cml0ZWIgc2J1c193cml0ZWIKKyNkZWZpbmUgZmJfd3JpdGV3IHNidXNfd3JpdGV3CisjZGVmaW5lIGZiX3dyaXRlbCBzYnVzX3dyaXRlbAorI2RlZmluZSBmYl93cml0ZXEgc2J1c193cml0ZXEKKyNkZWZpbmUgZmJfbWVtc2V0IHNidXNfbWVtc2V0X2lvCisKKyNlbGlmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19ocHBhX18pIHx8IGRlZmluZWQoX19zaF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fYXZyMzJfXykgfHwgZGVmaW5lZChfX2JmaW5fXykKKworI2RlZmluZSBmYl9yZWFkYiBfX3Jhd19yZWFkYgorI2RlZmluZSBmYl9yZWFkdyBfX3Jhd19yZWFkdworI2RlZmluZSBmYl9yZWFkbCBfX3Jhd19yZWFkbAorI2RlZmluZSBmYl9yZWFkcSBfX3Jhd19yZWFkcQorI2RlZmluZSBmYl93cml0ZWIgX19yYXdfd3JpdGViCisjZGVmaW5lIGZiX3dyaXRldyBfX3Jhd193cml0ZXcKKyNkZWZpbmUgZmJfd3JpdGVsIF9fcmF3X3dyaXRlbAorI2RlZmluZSBmYl93cml0ZXEgX19yYXdfd3JpdGVxCisjZGVmaW5lIGZiX21lbXNldCBtZW1zZXRfaW8KKworI2Vsc2UKKworI2RlZmluZSBmYl9yZWFkYihhZGRyKSAoKih2b2xhdGlsZSB1OCAqKSAoYWRkcikpCisjZGVmaW5lIGZiX3JlYWR3KGFkZHIpICgqKHZvbGF0aWxlIHUxNiAqKSAoYWRkcikpCisjZGVmaW5lIGZiX3JlYWRsKGFkZHIpICgqKHZvbGF0aWxlIHUzMiAqKSAoYWRkcikpCisjZGVmaW5lIGZiX3JlYWRxKGFkZHIpICgqKHZvbGF0aWxlIHU2NCAqKSAoYWRkcikpCisjZGVmaW5lIGZiX3dyaXRlYihiLGFkZHIpICgqKHZvbGF0aWxlIHU4ICopIChhZGRyKSA9IChiKSkKKyNkZWZpbmUgZmJfd3JpdGV3KGIsYWRkcikgKCoodm9sYXRpbGUgdTE2ICopIChhZGRyKSA9IChiKSkKKyNkZWZpbmUgZmJfd3JpdGVsKGIsYWRkcikgKCoodm9sYXRpbGUgdTMyICopIChhZGRyKSA9IChiKSkKKyNkZWZpbmUgZmJfd3JpdGVxKGIsYWRkcikgKCoodm9sYXRpbGUgdTY0ICopIChhZGRyKSA9IChiKSkKKyNkZWZpbmUgZmJfbWVtc2V0IG1lbXNldAorCisjZW5kaWYKKworI2RlZmluZSBGQl9MRUZUX1BPUyhwLCBicHApICAgICAgICAgIChmYl9iZV9tYXRoKHApID8gKDMyIC0gKGJwcCkpIDogMCkKKyNkZWZpbmUgRkJfU0hJRlRfSElHSChwLCB2YWwsIGJpdHMpICAoZmJfYmVfbWF0aChwKSA/ICh2YWwpID4+IChiaXRzKSA6IFwKKwkJCQkJCSAgICAgICh2YWwpIDw8IChiaXRzKSkKKyNkZWZpbmUgRkJfU0hJRlRfTE9XKHAsIHZhbCwgYml0cykgICAoZmJfYmVfbWF0aChwKSA/ICh2YWwpIDw8IChiaXRzKSA6IFwKKwkJCQkJCSAgICAgICh2YWwpID4+IChiaXRzKSkKKy8qIGRyaXZlcnMvdmlkZW8vZmJtb24uYyAqLworI2RlZmluZSBGQl9NQVhUSU1JTkdTCQkwCisjZGVmaW5lIEZCX1ZTWU5DVElNSU5HUwkJMQorI2RlZmluZSBGQl9IU1lOQ1RJTUlOR1MJCTIKKyNkZWZpbmUgRkJfRENMS1RJTUlOR1MJCTMKKyNkZWZpbmUgRkJfSUdOT1JFTU9OCQkweDEwMAorCisjZGVmaW5lIEZCX01PREVfSVNfVU5LTk9XTgkwCisjZGVmaW5lIEZCX01PREVfSVNfREVUQUlMRUQJMQorI2RlZmluZSBGQl9NT0RFX0lTX1NUQU5EQVJECTIKKyNkZWZpbmUgRkJfTU9ERV9JU19WRVNBCQk0CisjZGVmaW5lIEZCX01PREVfSVNfQ0FMQ1VMQVRFRAk4CisjZGVmaW5lIEZCX01PREVfSVNfRklSU1QJMTYKKyNkZWZpbmUgRkJfTU9ERV9JU19GUk9NX1ZBUiAgICAgMzIKKworCisvKiBkcml2ZXJzL3ZpZGVvL2ZiY21hcC5jICovCisKK2V4dGVybiBpbnQgZmJfYWxsb2NfY21hcChzdHJ1Y3QgZmJfY21hcCAqY21hcCwgaW50IGxlbiwgaW50IHRyYW5zcCk7CitleHRlcm4gdm9pZCBmYl9kZWFsbG9jX2NtYXAoc3RydWN0IGZiX2NtYXAgKmNtYXApOworZXh0ZXJuIGludCBmYl9jb3B5X2NtYXAoY29uc3Qgc3RydWN0IGZiX2NtYXAgKmZyb20sIHN0cnVjdCBmYl9jbWFwICp0byk7CitleHRlcm4gaW50IGZiX2NtYXBfdG9fdXNlcihjb25zdCBzdHJ1Y3QgZmJfY21hcCAqZnJvbSwgc3RydWN0IGZiX2NtYXBfdXNlciAqdG8pOworZXh0ZXJuIGludCBmYl9zZXRfY21hcChzdHJ1Y3QgZmJfY21hcCAqY21hcCwgc3RydWN0IGZiX2luZm8gKmZiX2luZm8pOworZXh0ZXJuIGludCBmYl9zZXRfdXNlcl9jbWFwKHN0cnVjdCBmYl9jbWFwX3VzZXIgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICpmYl9pbmZvKTsKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZmJfY21hcCAqZmJfZGVmYXVsdF9jbWFwKGludCBsZW4pOworZXh0ZXJuIHZvaWQgZmJfaW52ZXJ0X2NtYXBzKHZvaWQpOworCitzdHJ1Y3QgZmJfdmlkZW9tb2RlIHsKKwljb25zdCBjaGFyICpuYW1lOwkvKiBvcHRpb25hbCAqLworCXUzMiByZWZyZXNoOwkJLyogb3B0aW9uYWwgKi8KKwl1MzIgeHJlczsKKwl1MzIgeXJlczsKKwl1MzIgcGl4Y2xvY2s7CisJdTMyIGxlZnRfbWFyZ2luOworCXUzMiByaWdodF9tYXJnaW47CisJdTMyIHVwcGVyX21hcmdpbjsKKwl1MzIgbG93ZXJfbWFyZ2luOworCXUzMiBoc3luY19sZW47CisJdTMyIHZzeW5jX2xlbjsKKwl1MzIgc3luYzsKKwl1MzIgdm1vZGU7CisJdTMyIGZsYWc7Cit9OworCisjZW5kaWYgLyogX19LRVJORUxfXyAqLworCisjZW5kaWYgLyogX0xJTlVYX0ZCX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva2J1aWxkLmggYi9pbmNsdWRlL2xpbnV4L2tidWlsZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNzYzODQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4L2tidWlsZC5oCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBDb3BpZWQgZnJvbSBMaW51eDoKKyAqIGNvbW1pdCAzNzQ4N2E1NjUyM2Q0MDJlMjU2NTBkYTE2YzMzN2FjZjRjZWNkMTNkCisgKiBBdXRob3I6IENocmlzdG9waCBMYW1ldGVyIDxjbGFtZXRlckBzZ2kuY29tPgorICovCisjaWZuZGVmIF9fTElOVVhfS0JVSUxEX0gKKyNkZWZpbmUgX19MSU5VWF9LQlVJTERfSAorCisjZGVmaW5lIERFRklORShzeW0sIHZhbCkgXAorICAgICAgICBhc20gdm9sYXRpbGUoIlxuLT4iICNzeW0gIiAlMCAiICN2YWwgOiA6ICJpIiAodmFsKSkKKworI2RlZmluZSBCTEFOSygpIGFzbSB2b2xhdGlsZSgiXG4tPiIgOiA6ICkKKworI2RlZmluZSBPRkZTRVQoc3ltLCBzdHIsIG1lbSkgXAorCURFRklORShzeW0sIG9mZnNldG9mKHN0cnVjdCBzdHIsIG1lbSkpCisKKyNkZWZpbmUgQ09NTUVOVCh4KSBcCisJYXNtIHZvbGF0aWxlKCJcbi0+IyIgeCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL3Bvc3QuaCBiL2luY2x1ZGUvcG9zdC5oCmluZGV4IDYyNWRhNTUuLmFiZTQ3ZGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvcG9zdC5oCisrKyBiL2luY2x1ZGUvcG9zdC5oCkBAIC01Nyw4ICs1NywxMiBAQAogI2RlZmluZSBfUE9TVF9XT1JEX0FERFIJKENPTkZJR19TWVNfSU1NUiArIENQTV9QT1NUX1dPUkRfQUREUikKIAogI2VsaWYgZGVmaW5lZCAoQ09ORklHX01QQzg1eHgpCi0jaW5jbHVkZSA8YXNtL2NwbV84NXh4Lmg+Ci0jZGVmaW5lIF9QT1NUX1dPUkRfQUREUgkoQ09ORklHX1NZU19JTU1SICsgQ1BNX1BPU1RfV09SRF9BRERSKQorI2luY2x1ZGUgPGFzbS9pbW1hcF84NXh4Lmg+CisjZGVmaW5lIF9QT1NUX1dPUkRfQUREUgkoQ09ORklHX1NZU19JTU1SICsgb2Zmc2V0b2YoY2Nzcl9waWNfdCwgdGZycikpCisKKyNlbGlmIGRlZmluZWQgKENPTkZJR19NUEM4Nnh4KQorI2luY2x1ZGUgPGFzbS9pbW1hcF84Nnh4Lmg+CisjZGVmaW5lIF9QT1NUX1dPUkRfQUREUgkoQ09ORklHX1NZU19JTU1SICsgb2Zmc2V0b2YoY2Nzcl9waWNfdCwgdGZycikpCiAKICNlbGlmIGRlZmluZWQgKENPTkZJR180eHgpCiAjZGVmaW5lIF9QT1NUX1dPUkRfQUREUiBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VzYi9laGNpLWZzbC5oIGIvaW5jbHVkZS91c2IvZWhjaS1mc2wuaAppbmRleCAwODY5MWEwLi42NzYwMGVkIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VzYi9laGNpLWZzbC5oCisrKyBiL2luY2x1ZGUvdXNiL2VoY2ktZnNsLmgKQEAgLTE2MSw3ICsxNjEsNyBAQAogI2RlZmluZSBNUEM4M1hYX1NDQ1JfVVNCX0RSQ01fMDEJMHgwMDEwMDAwMAogI2RlZmluZSBNUEM4M1hYX1NDQ1JfVVNCX0RSQ01fMTAJMHgwMDIwMDAwMAogCi0jaWYgZGVmaW5lZChDT05GSUdfTVBDODNYWCkKKyNpZiBkZWZpbmVkKENPTkZJR19NUEM4M3h4KQogI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9VU0JfQUREUiBDT05GSUdfU1lTX01QQzgzeHhfVVNCX0FERFIKICNlbGlmIGRlZmluZWQoQ09ORklHX01QQzg1eHgpCiAjZGVmaW5lIENPTkZJR19TWVNfRlNMX1VTQl9BRERSIENPTkZJR19TWVNfTVBDODV4eF9VU0JfQUREUgpkaWZmIC0tZ2l0IGEvbGliL2FzbS1vZmZzZXRzLmMgYi9saWIvYXNtLW9mZnNldHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjA5NTYxCi0tLSAvZGV2L251bGwKKysrIGIvbGliL2FzbS1vZmZzZXRzLmMKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIEFkYXB0ZWQgZnJvbSBMaW51eCB2Mi42LjM2IGtlcm5lbDogYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jCisgKgorICogVGhpcyBwcm9ncmFtIGlzIHVzZWQgdG8gZ2VuZXJhdGUgZGVmaW5pdGlvbnMgbmVlZGVkIGJ5CisgKiBhc3NlbWJseSBsYW5ndWFnZSBtb2R1bGVzLgorICoKKyAqIFdlIHVzZSB0aGUgdGVjaG5pcXVlIHVzZWQgaW4gdGhlIE9TRiBNYWNoIGtlcm5lbCBjb2RlOgorICogZ2VuZXJhdGUgYXNtIHN0YXRlbWVudHMgY29udGFpbmluZyAjZGVmaW5lcywKKyAqIGNvbXBpbGUgdGhpcyBmaWxlIHRvIGFzc2VtYmxlciwgYW5kIHRoZW4gZXh0cmFjdCB0aGUKKyAqICNkZWZpbmVzIGZyb20gdGhlIGFzc2VtYmx5LWxhbmd1YWdlIG91dHB1dC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uCisgKiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworI2luY2x1ZGUgPGxpbnV4L2tidWlsZC5oPgorCitpbnQgbWFpbih2b2lkKQoreworCS8qIFJvdW5kIHVwIHRvIG1ha2Ugc3VyZSBzaXplIGdpdmVzIG5pY2Ugc3RhY2sgYWxpZ25tZW50ICovCisJREVGSU5FKEdFTkVSQVRFRF9HQkxfREFUQV9TSVpFLAorCQkoc2l6ZW9mKHN0cnVjdCBnbG9iYWxfZGF0YSkrMTUpICYgfjE1KTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvcG9zdC9kcml2ZXJzL2kyYy5jIGIvcG9zdC9kcml2ZXJzL2kyYy5jCmluZGV4IGIxNTJkZWEuLjRhMWIxYTQgMTAwNjQ0Ci0tLSBhL3Bvc3QvZHJpdmVycy9pMmMuYworKysgYi9wb3N0L2RyaXZlcnMvaTJjLmMKQEAgLTIxLDcwICsyMSw4OSBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0jaW5jbHVkZSA8Y29tbW9uLmg+Ci0KIC8qCiAgKiBJMkMgdGVzdAogICoKICAqIEZvciB2ZXJpZnlpbmcgdGhlIEkyQyBidXMsIGEgZnVsbCBJMkMgYnVzIHNjYW5uaW5nIGlzIHBlcmZvcm1lZC4KICAqCi0gKiAjaWZkZWYgSTJDX0FERFJfTElTVAotICogICBUaGUgdGVzdCBpcyBjb25zaWRlcmVkIGFzIHBhc3NlZCBpZiBhbGwgdGhlIGRldmljZXMgYW5kCi0gKiAgIG9ubHkgdGhlIGRldmljZXMgaW4gdGhlIGxpc3QgYXJlIGZvdW5kLgotICogI2Vsc2UgWyAhIEkyQ19BRERSX0xJU1QgXQorICogI2lmZGVmIENPTkZJR19TWVNfUE9TVF9JMkNfQUREUlMKKyAqICAgVGhlIHRlc3QgaXMgY29uc2lkZXJlZCBhcyBwYXNzZWQgaWYgYWxsIHRoZSBkZXZpY2VzIGFuZCBvbmx5IHRoZSBkZXZpY2VzCisgKiAgIGluIHRoZSBsaXN0IGFyZSBmb3VuZC4KKyAqICAgI2lmZGVmIENPTkZJR19TWVNfUE9TVF9JMkNfSUdOT1JFUworICogICAgIElnbm9yZSBkZXZpY2VzIGxpc3RlZCBpbiBDT05GSUdfU1lTX1BPU1RfSTJDX0lHTk9SRVMuICBUaGVzZSBkZXZpY2VzCisgKiAgICAgYXJlIG9wdGlvbmFsIG9yIG5vdCB2aXRhbCB0byBib2FyZCBmdW5jdGlvbmFsaXR5LgorICogICAjZW5kaWYKKyAqICNlbHNlIFsgISBDT05GSUdfU1lTX1BPU1RfSTJDX0FERFJTIF0KICAqICAgVGhlIHRlc3QgaXMgY29uc2lkZXJlZCBhcyBwYXNzZWQgaWYgYW55IEkyQyBkZXZpY2UgaXMgZm91bmQuCiAgKiAjZW5kaWYKICAqLwogCisjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8cG9zdC5oPgogI2luY2x1ZGUgPGkyYy5oPgogCiAjaWYgQ09ORklHX1BPU1QgJiBDT05GSUdfU1lTX1BPU1RfSTJDCiAKK3N0YXRpYyBpbnQgaTJjX2lnbm9yZV9kZXZpY2UodW5zaWduZWQgaW50IGNoaXApCit7CisjaWZkZWYgQ09ORklHX1NZU19QT1NUX0kyQ19JR05PUkVTCisJY29uc3QgdW5zaWduZWQgY2hhciBpMmNfaWdub3JlX2xpc3RbXSA9IENPTkZJR19TWVNfUE9TVF9JMkNfSUdOT1JFUzsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoaTJjX2lnbm9yZV9saXN0KTsgaSsrKQorCQlpZiAoaTJjX2lnbm9yZV9saXN0W2ldID09IGNoaXApCisJCQlyZXR1cm4gMTsKKyNlbmRpZgorCisJcmV0dXJuIDA7Cit9CisKIGludCBpMmNfcG9zdF90ZXN0IChpbnQgZmxhZ3MpCiB7CiAJdW5zaWduZWQgaW50IGk7Ci0JdW5zaWduZWQgaW50IGdvb2QgPSAwOwotI2lmZGVmIEkyQ19BRERSX0xJU1QKLQl1bnNpZ25lZCBpbnQgYmFkICA9IDA7CisjaWZuZGVmIENPTkZJR19TWVNfUE9TVF9JMkNfQUREUlMKKwkvKiBTdGFydCBhdCBhZGRyZXNzIDEsIGFkZHJlc3MgMCBpcyB0aGUgZ2VuZXJhbCBjYWxsIGFkZHJlc3MgKi8KKwlmb3IgKGkgPSAxOyBpIDwgMTI4OyBpKyspCisJCWlmIChpMmNfaWdub3JlX2RldmljZShpKSkKKwkJCWNvbnRpbnVlOworCQlpZiAoaTJjX3Byb2JlIChpKSA9PSAwKQorCQkJcmV0dXJuIDA7CisKKwkvKiBObyBkZXZpY2VzIGZvdW5kICovCisJcmV0dXJuIC0xOworI2Vsc2UKKwl1bnNpZ25lZCBpbnQgcmV0ICA9IDA7CiAJaW50IGo7Ci0JdW5zaWduZWQgY2hhciBpMmNfYWRkcl9saXN0W10gPSBJMkNfQUREUl9MSVNUOwotCXVuc2lnbmVkIGNoYXIgaTJjX21pc3NfbGlzdFtdID0gSTJDX0FERFJfTElTVDsKLSNlbmRpZgorCXVuc2lnbmVkIGNoYXIgaTJjX2FkZHJfbGlzdFtdID0gQ09ORklHX1NZU19QT1NUX0kyQ19BRERSUzsKIAotCWZvciAoaSA9IDA7IGkgPCAxMjg7IGkrKykgewotCQlpZiAoaTJjX3Byb2JlIChpKSA9PSAwKSB7Ci0jaWZuZGVmCUkyQ19BRERSX0xJU1QKLQkJCWdvb2QrKzsKLSNlbHNlCS8qIEkyQ19BRERSX0xJU1QgKi8KLQkJCWZvciAoaj0wOyBqPHNpemVvZihpMmNfYWRkcl9saXN0KTsgKytqKSB7Ci0JCQkJaWYgKGkgPT0gaTJjX2FkZHJfbGlzdFtqXSkgewotCQkJCQlnb29kKys7Ci0JCQkJCWkyY19taXNzX2xpc3Rbal0gPSAweEZGOwotCQkJCQlicmVhazsKLQkJCQl9CisJLyogU3RhcnQgYXQgYWRkcmVzcyAxLCBhZGRyZXNzIDAgaXMgdGhlIGdlbmVyYWwgY2FsbCBhZGRyZXNzICovCisJZm9yIChpID0gMTsgaSA8IDEyODsgaSsrKSB7CisJCWlmIChpMmNfaWdub3JlX2RldmljZShpKSkKKwkJCWNvbnRpbnVlOworCQlpZiAoaTJjX3Byb2JlKGkpICE9IDApCisJCQljb250aW51ZTsKKworCQlmb3IgKGogPSAwOyBqIDwgc2l6ZW9mKGkyY19hZGRyX2xpc3QpOyArK2opIHsKKwkJCWlmIChpID09IGkyY19hZGRyX2xpc3Rbal0pIHsKKwkJCQlpMmNfYWRkcl9saXN0W2pdID0gMHhmZjsKKwkJCQlicmVhazsKIAkJCX0KLQkJCWlmIChqID09IHNpemVvZihpMmNfYWRkcl9saXN0KSkgewotCQkJCWJhZCsrOwotCQkJCXBvc3RfbG9nICgiSTJDOiBhZGRyICUwMlggbm90IGV4cGVjdGVkXG4iLAotCQkJCQkJaSk7Ci0JCQl9Ci0jZW5kaWYJLyogSTJDX0FERFJfTElTVCAqLworCQl9CisKKwkJaWYgKGogPT0gc2l6ZW9mKGkyY19hZGRyX2xpc3QpKSB7CisJCQlyZXQgPSAtMTsKKwkJCXBvc3RfbG9nKCJJMkM6IGFkZHIgJTAyeCBub3QgZXhwZWN0ZWRcbiIsIGkpOwogCQl9CiAJfQogCi0jaWZuZGVmCUkyQ19BRERSX0xJU1QKLQlyZXR1cm4gZ29vZCA+IDAgPyAwIDogLTE7Ci0jZWxzZQkvKiBJMkNfQUREUl9MSVNUICovCi0JaWYgKGdvb2QgIT0gc2l6ZW9mKGkyY19hZGRyX2xpc3QpKSB7Ci0JCWZvciAoaj0wOyBqPHNpemVvZihpMmNfbWlzc19saXN0KTsgKytqKSB7Ci0JCQlpZiAoaTJjX21pc3NfbGlzdFtqXSAhPSAweEZGKSB7Ci0JCQkJcG9zdF9sb2cgKCJJMkM6IGFkZHIgJTAyWCBkaWQgbm90IHJlc3BvbmRcbiIsCi0JCQkJCQlpMmNfbWlzc19saXN0W2pdKTsKLQkJCX0KLQkJfQorCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoaTJjX2FkZHJfbGlzdCk7ICsraSkgeworCQlpZiAoaTJjX2FkZHJfbGlzdFtpXSA9PSAweGZmKQorCQkJY29udGludWU7CisJCXBvc3RfbG9nKCJJMkM6IGFkZHIgJTAyeCBkaWQgbm90IHJlc3BvbmRcbiIsIGkyY19hZGRyX2xpc3RbaV0pOworCQlyZXQgPSAtMTsKIAl9Ci0JcmV0dXJuICgoZ29vZCA9PSBzaXplb2YoaTJjX2FkZHJfbGlzdCkpICYmIChiYWQgPT0gMCkpID8gMCA6IC0xOworCisJcmV0dXJuIHJldDsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9wb3N0L3Rlc3RzLmMgYi9wb3N0L3Rlc3RzLmMKaW5kZXggYTQwNjZmOS4uNWY1OWZiYiAxMDA2NDQKLS0tIGEvcG9zdC90ZXN0cy5jCisrKyBiL3Bvc3QvdGVzdHMuYwpAQCAtMTY1LDYgKzE2NSw5IEBACiAgICAgfSwKICNlbmRpZgogI2lmIENPTkZJR19QT1NUICYgQ09ORklHX1NZU19QT1NUX1VBUlQKKyNpZiBkZWZpbmVkKENPTkZJR19QT1NUX1VBUlQpCisJQ09ORklHX1BPU1RfVUFSVCwKKyNlbHNlCiAgICAgewogCSJVQVJUIHRlc3QiLAogCSJ1YXJ0IiwKQEAgLTE3NSw2ICsxNzgsNyBAQAogCU5VTEwsCiAJQ09ORklHX1NZU19QT1NUX1VBUlQKICAgICB9LAorI2VuZGlmIC8qIENPTkZJR19QT1NUX1VBUlQgKi8KICNlbmRpZgogI2lmIENPTkZJR19QT1NUICYgQ09ORklHX1NZU19QT1NUX0VUSEVSCiAgICAgewpkaWZmIC0tZ2l0IGEvdG9vbHMvc2NyaXB0cy9tYWtlLWFzbS1vZmZzZXRzIGIvdG9vbHMvc2NyaXB0cy9tYWtlLWFzbS1vZmZzZXRzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRjMzM3NTYKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9zY3JpcHRzL21ha2UtYXNtLW9mZnNldHMKQEAgLTAsMCArMSwyNyBAQAorIyEvYmluL3NoCisKKyMgQWRhcHRlZCBmcm9tIExpbnV4IGtlcm5lbCdzICJLYnVpbGQiOgorIyBjb21taXQgMWNkZjI1ZDcwNGY3OTUxZDAyYTA0MDY0Yzk3ZGI1NDdkNjAyMTg3MgorIyBBdXRob3I6IENocmlzdG9waCBMYW1ldGVyIDxjbGFtZXRlckBzZ2kuY29tPgorCitta2RpciAtcCAkKGRpcm5hbWUgJDIpCisKKyMgRGVmYXVsdCBzZWQgcmVnZXhwIC0gbXVsdGlsaW5lIGR1ZSB0byBzeW50YXggY29uc3RyYWludHMKK1NFRF9DTUQ9Ii9eLT4ve3M6LT4jXCguKlwpOi8qIFwxICovOjsgXAorCXM6Xi0+XChbXiBdKlwpIFtcJCNdKlwoWy0wLTldKlwpIFwoLipcKTojZGVmaW5lIFwxIChcMikgLyogXDMgKi86OyBcCisJczpeLT5cKFteIF0qXCkgW1wkI10qXChbXiBdKlwpIFwoLipcKTojZGVmaW5lIFwxIFwyIC8qIFwzICovOjsgXAorCXM6LT46OjsgcDt9IgorCisoc2V0IC1lCisgZWNobyAiI2lmbmRlZiBfX0FTTV9PRkZTRVRTX0hfXyIKKyBlY2hvICIjZGVmaW5lIF9fQVNNX09GRlNFVFNfSF9fIgorIGVjaG8gIi8qIgorIGVjaG8gIiAqIERPIE5PVCBNT0RJRlkuIgorIGVjaG8gIiAqIgorIGVjaG8gIiAqIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5ICQoYmFzZW5hbWUgJDApIgorIGVjaG8gIiAqIgorIGVjaG8gIiAqLyIKKyBlY2hvICIiCisgc2VkIC1uZSAiJHtTRURfQ01EfSIgJDEgCisgZWNobyAiIgorIGVjaG8gIiNlbmRpZiIgKSA+ICQyCg==